源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-05-26 22:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:iOS应用开发中监听键盘事件的代码实例小结
[b]1.注册监听键盘事件的通知[/b]
[u]复制代码[/u] 代码如下:
    [[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];
[b]2.在键盘将要出现和隐藏的回调中,加入动画[/b]
[u]复制代码[/u] 代码如下:
- (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;     } }
[b]3.监听键盘删除键之非代理实现 [/b]在UITextField 和 UITextView ,如何监听到删除键。 我看到网上都是用代理监听的,我觉得不靠谱。 其实苹果已经写的很清楚了。 就在他们实现的协议里面~~
[u]复制代码[/u] 代码如下:
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 这个方法就是删除按钮监听。 只要自己写个子类,重写此方法就能监听。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部