iOS应用开发中监听键盘事件的代码实例小结

1.注册监听键盘事件的通知

    [[NSNotificationCenter defaultCenter] addObserver:self                                              selector:@selector(keyboardWillShow:)                                                  name:UIKeyboardWillShowNotification                                                object:nil];         [[NSNotificationCenter defaultCenter] addObserver:self                                              selector:@selector(keyboardShow:)                                                  name:UIKeyboardDidShowNotification                                                object:nil];         [[NSNotificationCenter defaultCenter] addObserver:self                                              selector:@selector(keyboardWillHide:)                                                  name:UIKeyboardWillHideNotification                                                object:nil];         [[NSNotificationCenter defaultCenter] addObserver:self                                              selector:@selector(keyboardHide:)                                                  name:UIKeyboardDidHideNotification                                                object:nil];

2.在键盘将要出现和隐藏的回调中,加入动画

- (void)keyboardWillShow:(NSNotification *)notif {     if (self.hidden == YES) {         return;     }         CGRect rect = [[notif.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];     CGFloat y = rect.origin.y;     [UIView beginAnimations:nil context:nil];     [UIView setAnimationDuration:0.25];     NSArray *subviews = [self subviews];     for (UIView *sub in subviews) {                 CGFloat maxY = CGRectGetMaxY(sub.frame);         if (maxY > y - 2) {             sub.center = CGPointMake(CGRectGetWidth(self.frame)/2.0, sub.center.y - maxY + y - 2);         }     }     [UIView commitAnimations]; }

- (void)keyboardShow:(NSNotification *)notif {     if (self.hidden == YES) {         return;     } }

- (void)keyboardWillHide:(NSNotification *)notif {     if (self.hidden == YES) {         return;     }     [UIView beginAnimations:nil context:nil];     [UIView setAnimationDuration:0.25];     NSArray *subviews = [self subviews];     for (UIView *sub in subviews) {         if (sub.center.y < CGRectGetHeight(self.frame)/2.0) {             sub.center = CGPointMake(CGRectGetWidth(self.frame)/2.0, CGRectGetHeight(self.frame)/2.0);         }     }     [UIView commitAnimations]; }

- (void)keyboardHide:(NSNotification *)notif {     if (self.hidden == YES) {         return;     } }

3.监听键盘删除键之非代理实现
在UITextField 和 UITextView ,如何监听到删除键。

我看到网上都是用代理监听的,我觉得不靠谱。

其实苹果已经写的很清楚了。

就在他们实现的协议里面~~


NS_CLASS_AVAILABLE_IOS(2_0) @interface UITextView : UIScrollView<UITextInput>

@protocol UITextInput<UIKeyInput>

@protocol UIKeyInput <UITextInputTraits>

- (BOOL)hasText;

- (void)insertText:(NSString *)text;

- (void)deleteBackward;

@end


写的非常清楚,一看就明白。

-deleteBackward 这个方法就是删除按钮监听。

只要自己写个子类,重写此方法就能监听。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。