共计 2137 个字符,预计需要花费 6 分钟才能阅读完成。
一、暗藏本身软键盘
当对于有多个 UITextField
控件都想通过点击“Return
”来暗藏本身软键盘的状况,这时的最好方法是应用 Did End on Exit 事件。在点击软键盘右下角的“Return”按钮后,会触发该事件。
该事件有一个 sender
参数示意以后文本框,这样便能够编写一个通用的事件处理办法(.m 文件)。
- (IBAction)TextField_DidEndOnExit:(id)sender {
// 暗藏键盘.
[sender resignFirstResponder];
}
而后在.h 文件中填写该办法的申明——
- (IBAction)TextField_DidEndOnExit:(id)sender;
回到 storyboard
,并按command+option+enter
关上辅助窗口,使辅助窗口显示.h 文件。选中一个 UITextField
控件,点击鼠标右键弹出面板,鼠标左键按住 Did End on Exit
事件旁边的圆圈,而后拖曳到右侧.h 文件的 TextField_DidEndOnExit
办法上,便会建设好事件连贯。随后依照同样的做法,将其余 UITextField
控件的 Did End on Exit
事件也连贯到 TextField_DidEndOnExit
办法。
运行一下,可发现每个文本框的软键盘都能够通过点击 “Return”
来暗藏了
二、点击 Return 主动转到下个文本框
当页面中有很多个文本框时,如果每次都须要点文本框激活软键盘、输出后点击 Return
暗藏软键盘、再点击下一个文本框……这样操作起来太繁琐了。于是咱们心愿可能实现点击 Return
时可能主动转到下一个文本框。尤其是对于最初一个文本框,心愿可能在点击 Return
时执行下一步操作。
例如对于登录页面。它下面有 账号文本框(nameTextField)
、明码文本框(passTextField)
、登录按钮(loginButton)
。
咱们心愿——点击账号文本框软键盘的 Return
时跳转到明码文本框,点击明码文本框软键盘的 Return
时执行登录。
因为这两个文本框的性能不同,不能像上一节那样写一个 TextField_DidEndOnExit
做对立解决,而应该别离建设各自的事件处理办法。
回到 storyboard,右击账号文本框(nameTextField
)弹出面板,按住 Did End on Exit
事件旁边的圆圈,而后拖曳到右侧.h 文件的空白中央,此时会弹出一个对话框给办法命名。输出名称(nameTextField_DidEndOnExit
)后回车确定,便主动生成了该事件办法。
随后依照同样的做法,为明码文本框(passTextField
)的 Did End on Exit 事件连贯办法(passTextField_DidEndOnExit
)。
来到.m 文件,填写具体代码——
- (IBAction)nameTextField_DidEndOnExit:(id)sender {
// 将焦点移至下一个文本框.
[self.passTextField becomeFirstResponder];
}
- (IBAction)passTextField_DidEndOnExit:(id)sender {
// 暗藏键盘.
[sender resignFirstResponder];
// 触发登陆按钮的点击事件.
[self.loginButton sendActionsForControlEvents:UIControlEventTouchUpInside];
}
对于账号文本框转明码文本框,不须要暗藏软键盘,只须要调用 becomeFirstResponder
激活新的文本框就行了。
对于明码文本框 Return 后执行登录。因为不再须要显示软键盘,所以还是得调用 resignFirstResponder
暗藏软键盘,而后触发登录按钮 (loginButton)的 UIControlEventTouchUpInside
事件进行登录。
运行一下,可发现曾经达到咱们心愿的成果了。点击账号文本框软键盘的 Return
时跳转到明码文本框,点击明码文本框软键盘的 Return
时执行登录。
怎么都是“Return
”,转换文本框与执行登录明明是不同的性能?
于是将账号文本框的 Return Key
属性设为“Next
”,将明码文本框的 Return Key
属性设为“Done
”,使界面与性能统一。
三、轻触背景暗藏软键盘
只能通过 Return
敞开软键盘太不灵便了,应该提供轻触背景暗藏软键盘的性能。
在 storyboard
,点击背景View
,将它的Custom Class
设置为 UIControl
,这样才会呈现Touch Down
事件。
右击背景 View 弹出面板,按住 Touch Down
事件旁边的圆圈,而后拖曳到右侧.h 文件的空白中央建设该事件的解决办法。
来到.m 文件,填写具体代码——
- (IBAction)View_TouchDown:(id)sender {
// 发送 resignFirstResponder.
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
}