我真的不明白为什么会这样。任何提示都会非常感激。
设定:
UIViewController
包含以下子视图:
UISearchBar
UITextField
UIView
(使用PickerView和Done按钮) - viewDidLoad隐藏它。我有两个辅助函数可以简化为:
func showPickerView () {
myPickerSubView.alpha = 1
}
func hidePickerView () {
myPickerSubView.alpha = 0
}
(实际上有动画,上下滑动等,但这部分工作正常)
我希望myPickerSubView
显示该人何时点击UISearchBar
或UITextField
。 myPickerSubView被myPickerSubview
上的完成按钮解除。
我从完全与之合作的UITextField
开始:
func textFieldDidBeginEditing(textField: UITextField)
{
if !(pickerSubViewVisible)
{
self.showPickerView()
}
eventFloorTextField.endEditing(true)
}
func pickerView(eventFloorPicker: UIPickerView, didSelectRow row:Int, inComponent component: Int {
//.. other processing code
self.eventFloorTextField.text = "My Pick: \(myPick)" //so the textfield gets updated
}
我想使用UISearchBar
代替,因为我想使用内置范围栏来增加一些功能。所以将UISearchBar
代表设置为自我等我认为我可以这样做:
func searchBarTextDidBeginEditing(searchBar: UISearchBar)
{
eventFloorSearchBar.endEditing(true)
self.showPickerView()
}
第一次按UISearchBar
时,PickerSubView
会按预期显示。然后,无论我做什么(按下我的文本字段,忽略PickerSubView
,如果我再次点击UISearchBar
,键盘将从底部出现。如果我的PickerSubView
已经存在,键盘将覆盖它。如果PickerSubView
不存在,如果点按UITextField
,PickerSubView
会在键盘后面滑动。
我不知道它是否显着 - 但插入符号(闪烁的光标)仍保留在UISearchBar
文本字段中,但即使我通过首先点击UITextfield
使其消失再次点击UISearchBar
,它将始终显示一个键盘。
我已经尝试了resignFirstResponder
以及其他各种方法,但它们似乎都没有用。