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

 更新时间:2016年03月04日 09:17:53   作者:心有思  
这篇文章主要介绍了iOS应用开发中监听键盘事件的代码实例小结,呼出键盘等操作为iOS App中的必备功能,示例代码为传统的Objective-C,需要的朋友可以参考下

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 这个方法就是删除按钮监听。

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

相关文章

  • iOS实现简单的抽屉效果

    iOS实现简单的抽屉效果

    这篇文章主要为大家详细介绍了iOS实现简单的抽屉效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • iOS9提示框的正确使用方式

    iOS9提示框的正确使用方式

    这篇文章主要为大家详细介绍了iOS9提示框的正确使用方式,iOS8升级到iOS9的过程,弹出提示框的方式有了很大的改变,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 详解iOS社会化分享集成

    详解iOS社会化分享集成

    这篇文章主要介绍了详解iOS社会化分享集成的相关知识点以及实现的代码效果讲述,有兴趣的朋友参考下。
    2018-02-02
  • IOS开发代码分享之用nstimer实现倒计时功能

    IOS开发代码分享之用nstimer实现倒计时功能

    在制作IOS项目中,我们经常要用到倒计时功能,今天就分享下使用nstimer实现的倒计时功能的代码,希望对大家能有所帮助
    2014-09-09
  • iOS开发中对文件目录的访问及管理的基本方法小结

    iOS开发中对文件目录的访问及管理的基本方法小结

    这篇文章主要介绍了iOS开发中对文件目录的访问及管理的基本方法小结,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-10-10
  • iOS消息发送和转发示例详解

    iOS消息发送和转发示例详解

    这篇文章主要给大家介绍了关于iOS消息发送和转发的相关资料,用Objective-C的术语来讲,这叫做“给某个对象发送某条消息”。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • 高仿IOS的Android弹出框

    高仿IOS的Android弹出框

    这篇文章主要为大家详细介绍了高仿IOS的Android弹出框的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • iOS开发之App主题切换解决方案完整版(Swift版)

    iOS开发之App主题切换解决方案完整版(Swift版)

    这篇文章主要为大家详细介绍了iOS开发之App主题切换完整解决方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • iOS中添加文本链接和图片示例代码

    iOS中添加文本链接和图片示例代码

    这篇文章主要给大家介绍了关于iOS中添加文本链接和图片的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-07-07
  • 右滑返回手势和UIScrollView中手势冲突的解决方法

    右滑返回手势和UIScrollView中手势冲突的解决方法

    这篇文章主要为大家详细介绍了右滑返回手势和UIScrollView中手势冲突的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02

最新评论