【发布时间】:2016-07-02 10:19:40
【问题描述】:
当 UITextField 添加到 ContainerView 时,我遇到了一个不响应触摸事件的问题。当我尝试将 UITextField 添加到主 UIViewController 时,它似乎很好并且它响应(键盘正在显示)。
我试图将子视图放在前面,在 ContainerView 上启用用户交互 - 没有任何帮助。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.scrollView = UIScrollView()
self.containerView = UIView()
self.scrollView.delegate = self
self.containerView.userInteractionEnabled = true
self.scrollView.addSubview(containerView)
self.view.addSubview(scrollView)
registerForKeyboardNotifications()
setupGesturesAndMap()
setupActivityIndicator()
setupCircleButton()
setupBrowseTextField()
// Initializing status
status = Status.Init
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
scrollView.frame = self.view.bounds
containerView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height)
}
还有负责设置browseTextField的函数:
func setupBrowseTextField() {
// Setup of browseTextField
browseTextField = UITextField(frame: CGRectMake(10, self.view.frame.height / 2, self.view.frame.width - 20, self.view.frame.height / 12))
browseTextField.placeholder = "Enter your destination here"
browseTextField.font = UIFont.systemFontOfSize(15)
browseTextField.borderStyle = UITextBorderStyle.RoundedRect
browseTextField.autocorrectionType = UITextAutocorrectionType.No
browseTextField.keyboardType = UIKeyboardType.Default
browseTextField.returnKeyType = UIReturnKeyType.Done
browseTextField.clearButtonMode = UITextFieldViewMode.WhileEditing
browseTextField.contentVerticalAlignment = UIControlContentVerticalAlignment.Center
browseTextField.delegate = self
containerView.addSubview(browseTextField)
}
大家有什么建议吗?
【问题讨论】:
-
我认为您必须将文本字段的委托更改为滚动视图或容器视图。所以:
browseTextField.delegate = self.scrollView或browseTextField.delegate = self.containerView -
老实说,我不认为将代理设置为滚动视图或容器视图会影响任何事情(为什么会这样?)。很可能您的某些手势与文本字段点击冲突。我建议你在手势委托中添加
-gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:方法,看看它是否有效。
标签: ios iphone swift uiview uitextfield