iPhone开发学习笔记006—— NSNotification自定义通知名

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 04:34 点击:

最近在网上看到一个“在iPhone开发中给键盘加个隐藏工具条”的demo,下下来后,运行后发现,点击“隐藏键盘”之后,之前的TableView不能恢复为应用刚启动时的显示,因为当TextField获得焦点时,会弹出软键盘,相应的需要通过程序调整界面上的TableView,修改其Frame将之上移。(注:TableView中放了五个TextField)。但是点击“隐藏键盘”后,TableView还是维持在其Frame修改之后的样子,没有恢复为应用刚启动时的样子。

尝试过在

- (void)textFieldDidEndEditing:(UITextField *)textField;方法中添加修改TableView的Frame使之恢复启动时显示样子的语句,但是发现只要TextField的焦点发生变化,就会调用这个API,比如从第一个TextField跳到第二个TextField,焦点从第一个切换到第二个,再从第二个切换到第三个,第四个。。。只要任意一个TextField发生失去焦点事件,就会调用这个API。结果造成每发生一次焦点切换,界面就会先恢复应用启动时显示的样子,然后很快又变成Frame被修改之后的样子。

也尝试过注册软键盘显示和隐蔵的通知
发现也是一样,焦点从一个TextField切换到另一个TextField,就会先后发送一次UIKeyboardWillHideNotification和UIKeyboardWillShowNotification通知,还是不能实现想要的效果,即只是在点击了“隐藏键盘”之后,才恢复主界面上TableView显示。

后来想到了自定义通知,才解决这个问题:
Demo里面有个HiddenKeyBoard函数,这个是点击“隐藏键盘”按钮之后会调用的selector,那就在这个里面添加发送通知语句:


[[NSNotificationCenterdefaultCenter]postNotificationName:@"mytest"object:nil];


然后在ViewController的viewWillAppear里面注册这个通知:

- (void)viewWillAppear:(BOOL)animated { 

    [[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(doAfterKeyboardbarHidden:)name:@"mytest"object:nil]; 

 


    [super viewWillAppear:animated]; 

}

 


- (void)viewWillDisappear:(BOOL)animated {   

    //[[NSNotificationCenter defaultCenter] removeObserver:self]; 

    [[NSNotificationCenterdefaultCenter] removeObserver:selfname:@"mytest"object:nil];

    [super viewWillDisappear:animated]; 

}

 


- (void)doAfterKeyboardbarHidden:(NSNotification*)notification {

    //id obj = [notification object];//获取到传递的对象

    NSLog(@"++++++ //// +++++");

    tableview.frame = CGRectMake(0,40, 320, 340);

}

OK!想要的效果实现了!
贴两张图:第一张是输入,输入完就点“隐藏键盘”,马上界面就恢复正常显示了,即第二张图:\\


摘自 Code Heaven
 


    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Lexical or Preprocessor Issue 'xxx.h
    • ios学习笔记(二)xcode 4.3.2下实现基本交互
    • ios版本的helloworld
    • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
    • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
    • IOS类似iphone通讯录TableView的完整demo【附源码】
    • UITableView一些方法
    • [iPhone中级]iPhone团购信息客户端的开发 (二)
    • iphone(object-c)内存管理(1)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1