侧边菜单打开时如何隐藏iOS键盘?

时间:2016-08-27 07:03:55

标签: ios swrevealviewcontroller

我在侧边菜单中使用SWRevealViewController,在键盘上使用IQKeyboardManagerSwift

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

应该怎么做?

2 个答案:

答案 0 :(得分:0)

  1. 捕获开始菜单的事件。您可以使用SWRevealViewcontroller Delegate或只需在菜单按钮中添加@IBAction即可。

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

    textField.resignFirstResponder()

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

答案 1 :(得分:0)

由于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

请接受它是否有效。(为我工作)