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应用中UITableView左滑自定义选项及批量删除的实现

    iOS应用中UITableView左滑自定义选项及批量删除的实现

    这篇文章主要介绍了iOS应用中UITableView左滑自定义选项及批量删除的实现,UITableView列表中即通讯录左滑呼出选项的那种效果在删除时能够实现多行删除将更加方便,需要的朋友可以参考下
    2016-03-03
  • iOS UIAlertView自动关闭功能

    iOS UIAlertView自动关闭功能

    这篇文章主要介绍了iOS UIAlertView自动关闭,需要的朋友可以参考下
    2017-06-06
  • IOS中使用UIWebView 加载网页、文件、 html的方法

    IOS中使用UIWebView 加载网页、文件、 html的方法

    UIWebView 是用来加载加载网页数据的一个框,接下来通过本文给大家介绍IOS中使用UIWebView 加载网页、文件、 html的方法,对本文详情感兴趣的朋友一起学习吧
    2016-02-02
  • iOS实现带遮罩的弹出选项卡

    iOS实现带遮罩的弹出选项卡

    这篇文章主要为大家详细介绍了iOS实现弹出选项卡,并附带遮罩,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • iOS的UI开发中Button的基本编写方法讲解

    iOS的UI开发中Button的基本编写方法讲解

    这篇文章主要介绍了iOS的UI开发中Button的基本编写方法讲解,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-11-11
  • iOS tableview实现简单搜索功能

    iOS tableview实现简单搜索功能

    这篇文章主要为大家详细介绍了iOS tableview实现简单搜索功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Swift 共享文件操作小结(iOS 8 +)

    Swift 共享文件操作小结(iOS 8 +)

    本文主要介绍IOS 共享文件,在这里给大家展示实例代码供大家参考,希望能帮助开发IOS的同学
    2016-07-07
  • 详解iOS开发中UIPickerView控件的使用方法

    详解iOS开发中UIPickerView控件的使用方法

    这篇文章主要介绍了详解iOS开发中UIPickerView控件的使用方法,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-11-11
  • iOS 监听回调机制KVO实例

    iOS 监听回调机制KVO实例

    下面小编就为大家分享一篇iOS 监听回调机制KVO实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • iOS消息发送和转发示例详解

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

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

最新评论