ios键盘控制 By Swift
- 协议控制键盘消失
- 输入框事件控制键盘消失
- 将view改成UIcontrol触发键盘消失
- 在输入框下添加Button来点击触发键盘消失
自定义UIView或者子类来获取触摸范围控制键盘隐藏
1.协议控制键盘消失
以UItextField为例- 当UITextField处于first responder状态,用户点击UITextField可以触发键盘出现
- 通过协议取消键盘通常做法是继承UITextFieldDelegate,注意: 我们使用协议之后一定不要忘记遵守协议,例如我们定义了一个someTextField , someTextField.delegate = self。
- 实现的方法,在方法textFieldShouldReturn(textField: UITextField)->Bool实现的代码。
someTextField.resignFirstResponder()
在弹出的键盘上按键盘右下角的按钮后,就可以使键盘消失,一般这个按钮为完成,搜索等
2.输入框事件控制键盘消失
可以给someTextField添加事件
someTextField.addTarget(self, action: "CancelKey", forControlEvents: UIControlEvents.EditingDidEndOnExit)
故事版可以直接设置UIText field的事件为 Did End On Exit
关于action(CancelKey)
我们必须要实现这个方法,可以只是定义一个空方法,但是不能不能不写,否则会导致程序崩溃。func Cancelkey(){}
3.将view改成UIcontrol触发键盘消失
故事版上我们可以将viewController的默认view改成UIcontrol类型,然后添加事件例如CancelAction
@IBAction func CancelAction(sender: AnyObject){
someTextField.resignFirstResponder()
}
4.在输入框下添加Button来点击触发键盘消失
这个跟上一个有点类似,我们添加一个button按钮用来取消键盘,可以添加到self.view上,然后我们写一个触发事件,类似于上一个的方法
5.自定义UIView或者子类来获取触摸范围控制键盘隐藏
我们定义一个view或者view的子类,重写方法
pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool
/// 根据手指点击的位置是否在我们输入框上,如果不是的,我们取消弹出的键盘,否者我们不做处理
该方法实现,需要将输入的控件添加到自定义的view及子类上,由于要实现以下的方法。当然你也可以通过直接传递textfield到该类中,好处是可以不需要将输入控件直接添加到自定义view上,但是这样使得代码耦合度较高,不推荐。
func didAddSubview(subview: UIView){}
///在该方法中获取textField来控制键盘的出现和消失
demo地址