如何处理iPhone中的关键事件

aqa*_*cha 4 iphone macos objective-c nsevent ios

嗨,我正在开发iphone应用程序,并希望在iphone中处理键盘事件.在Mac中,有一个NSEvent类可以处理键盘和鼠标事件,而在ios(iphone/ipad)中,NSEvent的对应物是UIEvent,它只处理触摸事件.我知道ios API不提供此功能,但我如何处理iphone中的关键事件?任何好的教程或者......开始......

Ish*_*shu 7

您无法直接编写keyboad; s键,并且在设备的情况下没有鼠标.

您可以为不同类型的charectersets制作逻辑,或者您可以在textField delgate方法或Textview Delegates方法中制作逻辑

textView委托

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
Run Code Online (Sandbox Code Playgroud)

textField委托

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
Run Code Online (Sandbox Code Playgroud)

您还可以对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
    }

}
Run Code Online (Sandbox Code Playgroud)

对于文本视图,您只需要更改这样的事件名称

[notificationCenter addObserver:self
                               selector:@selector (handle_TextFieldTextChanged:)
                                   name:UITextViewTextDidChangeNotification
                                 object:self.textField];
Run Code Online (Sandbox Code Playgroud)