我创建了一个包含UITextField的自定义视图
我已将UITextView的委托设为自定义视图,以便将有关该视图的行为封装到其自己的文件中。然后,当有人触摸屏幕时,我便开始使用触摸来关闭键盘
@IBDesignable
class NewPostView:UIView {
@IBOutlet weak var newPostTextView: UITextView!
func setup() {
...
newPostTextView.delegate = self
}
...
/* Closes the keyboard when somewhere else on the screen is touched */
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?){
closeKeyboard()
}
但是,仅当触摸了自定义视图时,才关闭键盘。考虑到我仍然希望尽可能多地封装自定义视图,我想知道关闭文本字段的最佳方法是什么时候触摸屏幕。
我不知道如何将委托分配给视图控制器。我尝试过newPostTextView.delegate = self.superview()
,但这会将它附加到超级视图而不是视图控制器上
答案 0 :(得分:1)
该视图仅拦截其区域内的触摸。
您需要在父视图(或涵盖所讨论屏幕空间的视图)上设置touchesBegan,或者我建议使用tapGestureRecognizer。它封装了更好的IMO。