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

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



相关阅读:
详解Linux系统中的SysVinit的机制
iOS中使用schema协议调用APP和使用iframe打开APP的例子
Html5 web本地存储实例详解
设置Linux系统文件权限
如何调整mac分辨率?苹果mac分辨率设置方法
PHP实现仿Google分页效果的分页函数
iOS模仿电子书首页实现书架布局样式
JS实现仿QQ面板的手风琴效果折叠菜单代码
PHP自带方法验证邮箱是否存在
PHP正则表达式过滤html标签属性(DEMO)
jquery ajax结合thinkphp的getjson实现跨域的方法
ThinkPHP使用心得分享-分页类Page的用法
如何调试异步加载页面里包含的js文件
JavaScript编程中实现对象封装特性的实例讲解
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 我战胜了自我作文 那,你忙吧 2015年网络搞笑流行语 星空的忧伤 百里拉练 《改造我们的学习》扩展训练 aideshiluo作文200字 关于学习计划的小学生记事作文_新一年的学习计划 大队长选举 我的毕业季 勇敢面对挫折作文300字 我姓 谁不爱孩子,孩子就不爱他 铁道游击队读后感400字 《弟子规》读后感(7) 读《三个人一双眼睛》有感400字 2015军训心得 秋·香 宇宙的秘密可能还是这样的(九) 心安既是幸福 描写人物性格的成语 2016师范生暑期家教实践报告 2015团区委流动人口年度工作总结 小学四年级作文450字:观察星空 小学六年级作文550字:闲读山水 农村扫盲工作现状调查报告 古灵精怪de妹妹 2013年下期校学生会工作计划 高中高三作文1000字:流泪 淡淡地想你,真的挺美 激发兴趣 提高写作水平 关于元旦的优美语句 落叶,在秋声里振颤 回忆的种子作文100字 小学生作文家乡的小河 农村学习科学发展观工作计划_个人工作计划 不如“死磕”——兼谈“一万个小时天才理论” 我这样长大作文 陈染散文之孤独的能力 小学语文《夜莺的歌声》说课稿 错过,此生无期 公务员入党申请书模板范例 小学六年级作文750字:听雨 校长电视专题片脚本 桂香人去 船教学反思 魅力领导身体语言 公司法律事务工作总结 那名女子成为怀念 我看见了你的眼睛

Copyright © 2016 phpStudy |