2012-04-20 2 views
1

Я хотел бы сделать что-то, чтобы вознаградить пользователя визуально, когда они совпадают с двумя текстовыми полями по мере их ввода. Это jQuery-esque, и я не уверен, возможно ли это в Objective-C/Xcode. Ключевым моментом здесь является «КАК ОНИ ТИПА». Некоторые формы настройки учетной записи для веб-пользователей показывают зеленый флажок, когда пароль/confirmPassword (в основном из-за форматирования безопасного поля) • или поля электронной почты/подтвержденияEmail совпадают или превращаются в красный «X», если пароли теряются их матч.Objective-C/Xcode - проверка пароля как пользовательских типов

Есть ли что-либо подобное событию onKeystroke в Objective-C/Xcode?

Я готов исследовать и изучить это. Я просто не знаю, как правильно ссылаться на этот тип функциональности.

+0

Не вопрос Xcode. – Almo

+0

Должен ли я отредактировать его вместо ссылки Obj-C? Я имею в виду, я использую Xcode. – TSNev

+0

Mac или iOS? Пожалуйста, будьте немного точнее;) –

ответ

1

Все, что вы хотите, здесь https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/HandlingKeyEvents/HandlingKeyEvents.html#//apple_ref/doc/uid/10000060i-CH7-SW1

Что вы ищете, чтобы реализовать его в вашем текстовом виде и буфера нажатий клавиш и сравнить их с текстовым полем.

- (void)keyUp:(NSEvent *)theEvent 
+0

Спасибо, Люк. Благодарю. Я проверю это. – TSNev

+1

Я бы не пошел с keyup - значение может также измениться без события keyup, даже без взаимодействия с пользователем вообще. –

+0

Переопределение 'keyUp:' требует подклассификации 'NSTextField' и получает вам необработанные ключевые события, которые вам тогда нужно будет обрабатывать в текст самостоятельно - нетривиальная задача. Правильный маршрут здесь - это ['NSTextFieldDelegate'] (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSTextFieldDelegate_Protocol/Reference/Reference.html) или [' NSTextDelegate'] (http://developer.apple.com/library/mac/documentation/Cocoa/Reference/NSTextDelegate_Protocol/), и в тексте были изменены/изменены методы уведомления. @TSNev –

1

Вы можете просто наблюдать значение текстового поля и в вашей функции обратного вызова, не логику:

[self.textField1 addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventValueChanged]; 
[self.textField2 addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventValueChanged]; 

- (void)textChanged:(UITextField *)sender 
{ 
    if ([self.textField1.text isEqualToString:self.textField2.text]) 
    { 
     // passwords match 
    } 
    else 
    { 
     // passwords don't match 
    } 
} 
0

Проверка после каждого символа может потреблять слишком много трафика веб-сервера, попробуйте «таймер» проверить 1.4 спустя несколько секунд после прекращения ввода пользователем.

@property IBOutlet NSSecureTextField *txtPassword; 
@property NSThread *syncPasswordTimer; 

- (void)awakeFromNib 
{ 
    [super awakeFromNib]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(passwordType) name:NSControlTextDidChangeNotification object:txtPassword]; 
} 

    - (void)passwordType 
    { 
     [syncPasswordTimer cancel]; 
     syncPasswordTimer = [[NSThread alloc] initWithTarget:self selector:@selector(passwordTimer) object:nil]; 
     [syncPasswordTimer start]; 
    } 

    - (void)passwordTimer 
    { 
     [NSThread sleepForTimeInterval:1.4f]; 

     if([[NSThread currentThread] isCancelled]) 
     { 
      [NSThread exit]; 
     }else{ 
      NSLog(@"'%@'",txtPassword.stringValue); 
      //DO THE CHECKING 
     } 
    } 
Смежные вопросы