在使用我的应用时,我一直操纵键盘行为 以获得更好的用户体验。 (即在文本字段外点击时最小化键盘。)
但是,每当我使用 ScrollView 作为Storyboard中ViewController上任何对象的背景时,我都无法使用以下代码关闭键盘...
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
每当我不在后台使用ScrollView时,此代码通常正常工作,但不能“与”它一起使用。
相反,我不得不求助于使用UITapGesture添加额外的代码来创建相同的效果......
e.g。在......
override func viewDidLoad() {
super.viewDidLoad()
}
我必须添加以下第一 ...
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(AddingViewController.dismissKeyBoard))
self.view.addGestureRecognizer(tap) // to Replace "TouchesBegan" - not work here.
然后是一个功能...... 第二次 ......
func dismissKeyBoard() {
self.view.endEditing(true)
}
因此,我以前所需的全部工作量加倍touchesBegan
谁能让我知道为什么会这样?为什么ScrollView的存在会产生这种影响?
(注意:我正在努力理解这个问题,因为当我最初遇到这个问题时,它引起了相当多的挫折,直到我找到了“试错法”的解决方案)
答案 0 :(得分:0)
我相信滚动视图已被点击。试试这个:
scrollView.userInteractionEnabled = false
如果您希望scrollView仍能滚动,请不要添加此内容;只需将点按手势添加到滚动视图即可。
scrollView.addGestureRecognizer(tap)