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 交通频道 作文范文 有备无患成语接龙 做班长不容易——杨诗语作文400字 傲慢是没碰到更高的自己 保护地球建议书300字 感慨人生500字 我和小皮球 区财政局局长对强化干部作风建设的几点思考 温暖,从未走远1000字 谢谢你给的缘分和喜欢 开心开怀 毕加索,无法复制的艺术天才 2014年销售文员实习报告范文 2016爱国演讲稿600字 初中物理教研工作计划 钱难挣屎难吃 淡如墨痕 全新中学教师述职报告范文 《诗经》——不朽的经典作文800字 医院呼吸内科工作总结-医院工作总结_医院工作总结 励志文章:每个人都有别人羡慕不已的东西 我想对你说——兄弟篇 假如我是一只小喜鹊 大学教学年度工作总结(2) 小学六年级作文1000字:惟有葵花向日倾 火拼毽子 论中国改革进程中农民的政治参与和政治稳定 作品16号《火光》 边检工作人员学习科学发展观心得体会 用流连忘返造句例句 成长的路上作文900字 《洪湖春光美》两则 回顾人工合成酵母丙氨酸转移核糖核酸工作 浅析审计证据收集步骤 夜爱 帮王奶奶贴春联 青年农民入党申请书范文2015 小学三年级作文800字:骄傲的公主PK善良的小女孩 9个温馨的人生感悟 飞吧!飞吧!飞吧! 600字我爱春节的作文:愉快的春节 一双象牙筷 放弃与选择作文700字 加强担保体系建设 解决企业融资难题 生死一瞬间-生命中的无常 冬天里温暖的被窝 职场励志名言精选 初中写家的作文 幽幽情愁 记叙文500字作文 我最喜欢秋天牟智通作文250字

Copyright © 2016 phpStudy |