键盘事件和NSTimer
来源:互联网 发布:淘宝申请退款时间限制 编辑:程序博客网 时间:2024/06/07 17:52
一、键盘事件
当用户敲击键盘时会发送什么相应事件?首先,windows管理器捕获该事件并转发给活动的应用。该活动应用将该键盘事件转发给键窗口。键窗口转发事件给“活动的”视图。那么那一个视图是活动的呢?每个窗口都有一个称之为firstResponder的outlet,指向windows的一个视图。该视图是该window的一个“活动”视图。例如,当你点击一个文本域,它将称为那个窗口的firstResponder。当用户试图将firtResponder到另一个视图时(通过选项卡或点击另外一个视图),视图在firtResponder出口改变之前,将进行一些检查。首先,将询问可能将变为firtResponder的视图是否接受first-responder状态。若返回NO则意味着该视图对键盘事件不感兴趣。例如,你没法在slider输入字符,所以它会拒绝first-responder状态。如果视图不接受first-responder状态,那么将询问当前first responder视图是否放弃其first responder角色。如果编辑不通过,该视图可以拒绝放弃first-responder状态。例如,如果用户没有敲全电话号码,文本域将拒绝放弃该状态。最后,视图将被告知它变成了first responder。通常,这会改变其外观。
注意,每个窗体都有自己的first responder。一些窗体可能会被打开,但只有键窗体的first responder能够捕获键盘事件。
NSResponder
我们对以下继承自NSResponder的方法感兴趣:
-(BOOL)acceptsFirstRespnder
通过子类重载,若能处理键盘事件则返回YES。
-(BOOL)resignFirstResponder
询问接收者是否愿意放弃first-responder状态。
-(BOOL)becomeFirstResponder
通知接收者在其NSWindow中它已经变为了first responder。
-(void)keyDown:(NSEvent *)theEvent
通知接收者,用户已经按下了一个键。
-(void)keyUp:(NSEvent *)theEvent
通知接收者,用户已经释放了一个键。
-(void)flagsChanged:(NSEvent *)theEvent
通知接收者,用户已经按下或释放了一个修改器键(Shift、Control等等)。
NSEvent
下面是一些关于键盘事件的NSEVent方法
-(NSString *)characters
返回由事件创建的字符。
-(BOOL)isARepeat
如果用户因按下键引发的键事件被重复,就返回YES;如果键事件是新的,就返回NO。
-(unsigned short)keyCode
向引发事件的键盘返回代码。
-(NSUInteger)modifierFlags
返回一个整数bit域,指明影响接收者的修饰符键。
时钟对象有一个target、一个选择器和一个时延,单位为秒。在时延时间到了之后,选择起消息被发送给target。时钟将自己作为一个参数发送给消息。可以设置时钟来周期性地发送消息。
创建一个TutorController类,当用户点击Go按钮时,将创建一个NSTimer实例。时钟将每0.1秒发送一条消息。该触发的方法将检查两个视图是否匹配。如果匹配,将让用户键入新的字母。否则,进程指示器将更新以反映时间的流逝。当按下Stop按钮,时钟将停止。
- 键盘事件和NSTimer
- 键盘事件和鼠标事件
- 键盘和鼠标事件
- NStimer和Runloop之间的关系(NSTimer和其他事件同时显示执行)
- 控件焦点和键盘事件
- 键盘和鼠标事件总结
- VB键盘和鼠标事件
- 鼠标和键盘处理事件
- webdriver 鼠标和键盘事件
- 常见鼠标事件和键盘事件
- Java中的鼠标事件和键盘事件
- 鼠标事件和键盘事件模拟函数
- JAVA GUI(键盘事件 和 鼠标事件)
- GUI编程 鼠标事件和键盘事件
- 键盘事件和鼠标事件【js】
- AngularJs 中的键盘事件和鼠标事件
- pyhook监听鼠标事件和键盘事件
- js鼠标事件和键盘事件
- Android 4.0 中的PowerManager(电源管理--休眠唤醒)
- Ubuntu11.10安装repo
- yahoo前端优化34条规则——图片、Coockie与移动应用篇
- 国内比较快的ubuntu11.10源更新列表
- 面试题之寻找丢失的数字
- 键盘事件和NSTimer
- 《sed的流艺术之一》-linux命令五分钟系列之二十一
- JS函数大全(转)
- 去掉CodeIgniter URL中的index.php
- HBase写入性能改造(续)--MemStore、flush、compact参数调优及压缩卡的使用
- 程序员总结-如何干好一个技术牛人
- 查询用户创建的sequence
- el表达式最两位小数点
- 《sed的流艺术之二》-linux命令五分钟系列之二十二