键盘焦点方法
键盘事件主要有两个,一个是获得焦点,一个是失去焦点。或者说一个是呼出键盘,另一个是消失键盘。
获得焦点
获取焦点的方法为becomeFirstResponder
,我们可以通过调用这个方法来呼出键盘。**需要注意的是,只有支持编辑的控件才可以呼出键盘,如UITextView
,UITextField
;而普通的控件或UIView
即使获取焦点也不会呼出键盘,如UITableView
,UIButton
如果想使用webView
自动获取焦点,那么一定不要忘记设置keyboardDisplayRequiresUserAction
为false
,否则键盘不会弹出。
失去焦点
常用的失去焦点的方法为resignFirstResponder
,调用这个方法可以让当前控件失去焦点,从而使键盘落下;需要注意的是调用方法的对象必须是弹出键盘的控件本身,而不能是其父View
如果没有办法获取到获取焦点的控件本身,而必须利用其父View
失去焦点的话,可以使用另一个方法endEdit
,这个方法带有一个参数,为是否强制终止编辑,一般选择为YES,从而使键盘消失。
如果不是必须的话,更建议大家使用resignFirstResponder
方法
键盘事件通知
iOS系统支持的常用键盘事件通知有六个,分别是
在这些事件的userInfo中会有以下几个属性,可以用于进行界面的处理。
后面三个属性用户可以根据前两个进行计算。需要注意的是在iPad上由于键盘支持浮动,需要支持UIKeyboardWillChangeFrameNotification
和UIKeyboardDidChangeFrameNotification
两个键盘通知。
自定义键盘
UITextView
和UITextField
由于UITextView
和UITextField
支持属性inputView
和inputAccessoryView
,所以只需要把要替换键盘和工具栏的界面画好,直接进行设置尽可以了。
UIWebView
对于UIWebView
的键盘处理比较麻烦,需要手动去掉accessoryView,具体的去除方法可以参考网上一些实现。
如iOS8下可以参考Remove Next / Previous buttons (inputAccessoryView) for Custom Keyboard in iOS8 WebView
就写这些吧,更多的还要在实践中具体分析使用。