我在一个视图控制器下的滚动视图下的视图下有一个文本字段,该视图控制器是导航控制器的视图控制器之一。当用户在文本字段外触摸时,我想关闭键盘。我尝试使用touchesBegan:
,但是在scrollview下时不会触发。我也尝试在滚动视图中禁用用户交互,但没有任何效果。有人可以帮我吗?
func dismissKeyboard(txtField:UITextField)
{
txtField.resignFirstResponder()
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
dismissKeyboard(firstNameTxt)
}
更改了下面的工作方式
extension AddEditHireViewController {
func hideKeyboard()
{
let tap: UITapGestureRecognizer = UITapGestureRecognizer(
target: self,
action: "dismissKeyboardNew")
self.formView.addGestureRecognizer(tap)
}
func dismissKeyboardNew()
{
self.formView.endEditing(true)
// self.dismissKeyboard(self.firstNameTxt)
} }
最佳答案
尽管Matthew Bradshaw提供的解决方案也可以使用,但是如果用户滚动,它也不会关闭键盘。如果您希望这样做,则另一个解决方案是子类UIScrollView
。然后,您可以在此子类中重写touchesBegan
方法,然后相应地结束编辑。
class DismissableScrollView: UIScrollView {
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
endEditing(false)
}
}
完成此操作后,只需将现有
UIScrollView
的类更改为DismissableScrollView
,或者如果您已经对UIScrollView
进行了子类化,则可以将其添加到该子类中。关于ios - touches开始在scrollview下关闭键盘textview不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38277448/