【问题标题】:How to hide iOS keyboard when side menu opens?侧边菜单打开时如何隐藏iOS键盘?
【发布时间】:2017-01-03 20:13:06
【问题描述】:

我将SWRevealViewController 用于侧边菜单,IQKeyboardManagerSwift 用于键盘。

当我在文本字段中编辑内容并尝试打开菜单时,键盘应该会自动隐藏,但我无法这样做。

这应该怎么做?

【问题讨论】:

    标签: ios swrevealviewcontroller


    【解决方案1】:
    1. 捕获打开菜单的事件。您可以使用 SWRevealViewcontroller Delegate 或简单地将 @IBAction 添加到菜单按钮来执行此操作。

    2. 在此方法中,为需要键盘的元素(如 textField)调用 .resignFirstResponder():

      textField.resignFirstResponder()

    当然,您可以在每个可以有键盘的元素中调用此函数,以确保调用正确的键盘。

    【讨论】:

      【解决方案2】:

      由于 UIBarButtonItem 没有从 UIView 继承或暴露项目的底层视图,这并不像添加手势识别器那么容易。

      一个可行的解决方案是 [步骤 1] 为侧边菜单图标定义自定义视图 [步骤 2] 添加手势以隐藏键盘。

      //gesture:tap anywehere to dismiss the keyboard
          let tap = UITapGestureRecognizer(target:self.view,action:#selector(UIView.endEditing))
          tap.cancelsTouchesInView = false
          view.addGestureRecognizer(tap)
      
          let customButton = UIButton(frame: CGRect.init(x: 0, y: 0, width: 20, height: 20))
          customButton.setImage(UIImage(named: "menu"), for: .normal)
          //hide keyboard gesture(tap gesture)
          customButton.addGestureRecognizer(tap)
          customButton.isUserInteractionEnabled = true
      
          if self.revealViewController() != nil {
              customButton.addTarget(self.revealViewController(), action: #selector(SWRevealViewController.revealToggle(_:)), for: .touchUpInside)
          self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
          }
          self.navigationItem.leftBarButtonItem?.customView = customButton
      

      如果可行,请接受作为答案。(为我工作)

      【讨论】:

        猜你喜欢
        • 2019-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-30
        • 2019-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多