为什么不要在viewDidLoad方法中设置开始监听键盘通知

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)



一个普遍的错误是,程序猿(媛)试图在view controller的view不在屏幕上时监听键盘通知.

他们开始在viewDidLoad方法中开始监听通知,并且在dealloc方法中移除监听通知.

这是一种大有问题的行为,因为当你的视图不在屏幕上显示,而键盘开始显示在其他视图上的时候,你绝不应该在你的视图控制器中调整任何键盘组件的显示!

牢记这一点:键盘通知就像任何其他通知一样,被广播到所有监听者,比如你的App的上下文中.所以你需要特别小心,你不能够在你的视图不在屏幕的时候对键盘通知做出响应!

时间: 2024-09-12 11:12:19

为什么不要在viewDidLoad方法中设置开始监听键盘通知的相关文章

为何不能在viewDidLoad方法中显示其他视图

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 你可以使得当视图控制器(view controller)显示自身的时候显示分享选项控制器.你视图控制器的viewDidAppear方法将在它显示在屏幕上的时候被调用,并且在你App中的所有继承体系中的视图都是如此.这意味着你可以用这个机会在你的视图控制器视图上面显示其他视图. 不要试图在你的视图控制器的viewDidLoad方法中显示活动视图控制器(activ

activity-从onReceive 方法中设置新的报警器

问题描述 从onReceive 方法中设置新的报警器 在数据库(按时间排序)中有一个 reminders 的集合,当程序开启时我就调用 setAlarm.我需要在 onReceive 方法中添加代码来实现下面的任务: 1.从数据库中获取第一个提醒. 2.获得相关提醒的延迟. 3.设置一个新的报警获得下一个提醒. 我创建的 BroadcastReceiver 类: public class AlarmReceiver extends BroadcastReceiver{ private stati

联想G410(预装windows8.1) 如何在bios中设置从U盘启动安装Ubuntu14.10?

问题描述 联想G410(预装windows8.1) 如何在bios中设置从U盘启动安装Ubuntu14.10? 我已经将U盘制作成了安装盘,如图 然后重启电脑,按fn+f2进入了bios设置界面, 如何设置从U盘启动呢? 解决方案 看不到图片啊,你重新发一下图吧 解决方案二: 看不到图片啊,你重新发一下图吧 解决方案三: 首先把boot mode由uefi修改为传统或者bios. 然后下面设置启动顺序,如果没有,开机按住f8或者f12,然后会有启动设备列表的菜单,选择U盘. 解决方案四: bio

android-在一个自定义适配器中设置ImageView的可见性

问题描述 在一个自定义适配器中设置ImageView的可见性 我自定义了一个列表适配器.我想要列表适配器中的图像根据一个值来显示或隐藏.但是我发现这个图像的可见性也不是依据这个值的.如何运用这个值设置ImageView的可见性呢? 下面是我的代码,代码是在 getView 方法中设置的 singleRow=data.get(position); readit = singleRow.getRead(); Log.i("readit","" + readit ); /

什么时候会执行viewDidLoad方法

什么时候会执行viewDidLoad方法   这个博文是为了解释,为何有时候,你给属性赋值,在viewDidLoad方法中却取不到值的原因. 第一种情况,presentViewController会执行被present的控制器的viewDidLoad方法:     第二种情况,即使不执行推出或者present操作,也会执行viewDidLoad方法:

java JIntellitype实现全局热键设置 监听键盘 系统剪贴板

问题描述 java JIntellitype实现全局热键设置 监听键盘 系统剪贴板 我用JIntellitype实现全局热键设置,监听键盘事件ctrl+c和ctrl+v并且与系统剪贴板结合,当用户按下ctrl+v时打印出用户复制的存于剪贴板中的内容,现在情况是这样的当用户按快捷键ctrl+C复制时复制的内容并没有存入系统剪贴板中,用户鼠标右击复制的内容才能存入剪贴板中是为什么呢 当我撤销对ctrl+c键的监听时就可以.怎样能让我既监听ctrl+c又当按快捷键ctrl+C复制时复制的内容存入系统剪

Word2013文档中设置字体大小的4种方法

  为Word2013文档中的文本设置字体大小是最常用的Word设置之一,用户可以通过以下4种方法设置Word2013文档中的字体大小: 方式1:选中需要改变字体大小的文本块,然后在"开始"功能区的"字体"分组中单击"字号"下拉三角按钮,在字号下拉列表中选择合适的字体大小,如图2013073003所示. 图2013073003 选择字体大小 方式2:选中需要改变字体大小的文本块,在"开始"功能区的"字体"分

Word2013中设置行距的两种方法

  方法1:在行距列表中设置 打开Word2013文档窗口,选中需要设置行距的段落或全部文档.在"开始"功能区的"段落"分组中单击"行和段落间距距"按钮,并在打开的行距列表中选中合适的行距,如图1所示. 图1 快速设置行距 方法2:在"段落"对话框中设置 用户还可以在"段落"对话框中对行距进行更详细地设置,操作步骤如下所述: 第1步,打开Word2013文档窗口,选中需要设置行间距的文档内容.然后在&quo

.NET中设置联合结构的方法和联合体的特性应用

导读:在进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中.也就是使用覆盖技术,几个变量互相覆盖.这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作"共用体"类型结构,简称共用体,也叫联合体. 在C++中有一种类型叫做联合体(也叫共用体),它的关键字为union,在使用上与结构struct非常相似,可以包含任何的结构类型数据,但它又有一个非常独特的特性,那就是所有的数据都指向一个地址. 这个意思你可以理解为:联合体中的所有数据都是引用一个内存块中相