Ios 无法再次退出搜索栏

Ios 无法再次退出搜索栏,ios,swift,Ios,Swift,我真的不明白为什么会这样。如有任何提示,将不胜感激 设置: UIViewController具有以下子视图: UISearchBar UITextField UIView(使用PickerView和Done按钮)-viewDidLoad将其隐藏 我有两个助手函数,可以简化为: func showPickerView () { myPickerSubView.alpha = 1 } func hidePickerView () { myPickerSubView.alpha = 0 }

我真的不明白为什么会这样。如有任何提示,将不胜感激

设置:
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
    ,因为我想使用内置的范围栏来增加一些功能。因此,在将
    ui搜索栏
    委托设置为self等之后,我想我可以:

      func searchBarTextDidBeginEditing(searchBar: UISearchBar)
      {
        eventFloorSearchBar.endEditing(true)
        self.showPickerView()
      }
    
    当您第一次按下
    ui搜索栏时,
    PickerSubView
    将按预期显示。然后,无论我做什么(按我的文本字段,关闭
    选择器子视图
    ),如果我第二次点击
    ui搜索栏
    ,键盘将从底部弹出。如果my
    PickerSubView
    已存在,键盘将覆盖它。如果
    PickerSubView
    不存在,如果我点击
    UITextField
    ,则
    PickerSubView
    将在键盘后面向上滑动

    我不知道它是否重要,但插入符号(闪烁的光标)仍保留在
    UISearchBar
    文本字段中,但即使我先点击
    UITextfield
    使其消失,当我第二次点击
    UISearchBar
    时,它始终会显示一个键盘


    我尝试过辞职FirstResponder以及其他各种方法,但它们似乎都不起作用。

    尝试将您的
    选择器子视图设置为
    搜索栏的
    输入视图
    ——这样可以防止键盘滑出。我认为您可以为按钮设置输入视图,但在UISeachbar中,它是一个默认为零的只读值。我尝试将UISearchbar子类化,然后按照苹果的建议覆盖“inputView”,使其成为“读/写”,但在这方面没有成功。。。