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 交通频道 作文范文 宿州东-潍坊 杭州东-深圳坪山 怀化-坪石 广宁-怀集 怀仁-张家口南 诸城-汨罗 蚌埠-竹园坝 藤县-北海 达州-黄石 四合永-杨家营 安图西-凤城东 天柱山-玉林 焦作-花园 吐哈-兖州 呼和浩特-察素齐 庐山-西峡 阜阳-兰州 滨海北-沈阳 义乌-沈阳 襄汾-沧州 上海南-黔江 马兰-泽普 星朗-都匀 东升-小榄 樟树东-开江 淄博-黄村 安图-延吉 海阳-巩义 五莲-海阳 信阳东-鹤壁东 保健-桑根达来 嘉善-涟源 襄垣-向塘 济南-泊头 包头-昆明 庐山-太原 鹰潭北-无锡东 疏勒河-民权 张家界-内乡 唐山北-长春西 小扬气-弯道 衡阳-襄阳 四道湾-呼和浩特东 平原-嘉峪关 天津-阳平关 朝阳-大石桥 庆安-康金井 铁岭西-公主岭南 马鞍山-郓城 秀山-渠县 锡林浩特-化德 东莞东-淮滨 合肥-宁波 镇江-禹城 三穗-昆山南 高邑西-胜芳 六盘水-新乡 加南-红彦 渠旧-渠黎 吐鲁番-武威 黄陵南-江桥 杭州东-永修 长汀南-南昌 太原-天津西 东营-济南东 南城司-大涧 当阳-海石湾 广州西-宜州 卢龙-通辽 香坊-盖州 洛阳-唐河 郓城-苏州 黑井-西昌 晏城-嘉兴 广宁-榕江 八面城-三江口 太阳沟-松树林 宜春-烟台 尚志-兴隆镇 商丘南-南平南 深圳哪里有2到4岁的小孩学街舞的学校
邮政普包 PA12358753913帮忙查一下到哪了
从苏州列车火车站到圆融时代广场坐公交的路线多少急需,谢谢哦
15号沧州到上海的列车票什么时候能买到
从泉州到浙江桐乡过路费
谁能找到徐千雅坐上列车去拉萨的歌词和做词做曲?
从合肥市去和县乌江镇详细交通路线
内江到贵州铜仁坐火车列车要多久,以及路线
我要回家从天津杨柳青火车站怎么走去宝坻因为下午4点到天津,所以时间比较紧,请知道的人赶快告诉我
七年级华师大版,生物调查表
中午十二点多到咸阳机场,晚上十一点去兰州的火车,还有
是否可以从武昌火车列车站买鄂州到诸暨的火车列车票
去常州市东南陶瓷商城518号怎么走
北京金海湾酒店管理有限公司是真的吗
哪个快递能到云南临沧市凤庆县
有谁知道承德市一化环能热电在哪吗 从列车火车站怎么去比较快一点
杭州到兰州的火车列车票多少钱?
济南到青岛动车组价格是多少·明天10月5号有几点的啊
从湛江到沧州怎么走最方便,最快,又省钱
深圳到浙江省开化驾车怎么走
从汉口火车列车站到武汉机场需要做什么车
从石家庄市到济南市有没有高速公路?怎么走?
广州列车火车东站和谐号时刻表
{岛服}魔族在没?被压着打的感觉爽不爽?
从长沙到柳州坐列车火车经过哪些站
...旅游路线?最值得去的地方有哪些?价格大概多少?怎么游览三...
求从山东烟台到张家界、凤凰古城的自助游攻略
电信3G无线网卡,在临朐汽车站附近网络能否被覆盖
请问如何从湛江坐车都珠海的吉林大学珠海学院 我从未出过远
襄樊隆中的门票是多少/

Copyright © 2016 phpStudy |