как обрабатывать ключевые события в iphone

Привет, я работаю над приложением для iphone и хочу обрабатывать события клавиатуры в iphone. В Mac есть класс NSEvent, который обрабатывает события клавиатуры и мыши, а в ios (iphone/ipad) аналогом NSEvent является UIEvent, который обрабатывает только события касания. Я знаю, что ios API не предоставляет эту функциональность, но как я могу обрабатывать ключевые события в iphone??? Любой хороший учебник или что-то, чтобы начать...


person aqavi_paracha    schedule 07.03.2011    source источник


Ответы (2)


Вы не можете напрямую кодировать ключ клавиатуры, а в случае устройства нет мыши.

вы можете сделать свою логику для разных типов наборов символов или вы можете сделать свою логику в методах delgate textField или методе делегатов Textview

делегат textView

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

делегат текстового поля

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

Вы также можете использовать уведомление для textField и Textview.

Для TextField используйте это

вызовите этот метод регистрации в viewDidLoad

-(void)registerForTextFieldNotifications {

    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];

    [notificationCenter addObserver:self
                           selector:@selector (handle_TextFieldTextChanged:)
                               name:UITextFieldTextDidChangeNotification
                             object:self.textField];

}


- (void) handle_TextFieldTextChanged:(id)notification {



    if([iSinAppObj.passCodeString isEqualToString:lockTextField.text])
    {   
        //code here
    }

}

и для текстового просмотра вам нужно изменить только имя события, подобное этому

[notificationCenter addObserver:self
                               selector:@selector (handle_TextFieldTextChanged:)
                                   name:UITextViewTextDidChangeNotification
                                 object:self.textField];
person Ishu    schedule 07.03.2011

Вы можете использовать уведомления для обработки событий, как описано здесь: http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html

Но функционал очень ограничен.

person Jose Cherian    schedule 07.03.2011
comment
Большое спасибо ... но эта ссылка, похоже, не дает мне полной функциональности ... Я хочу обрабатывать каждый ключ, введенный пользователем (на iphone), и отправлять его на другой компьютер по локальной сети. - person aqavi_paracha; 07.03.2011
comment
Может быть, использовать скрытое текстовое поле и захватывать входные данные через делегатов? - person Jose Cherian; 07.03.2011
comment
да, я думал о том же решении... Итак, позвольте мне попробовать Большое вам спасибо... Ура - person aqavi_paracha; 07.03.2011