【发布时间】:2017-01-03 20:13:06
【问题描述】:
我将SWRevealViewController 用于侧边菜单,IQKeyboardManagerSwift 用于键盘。
当我在文本字段中编辑内容并尝试打开菜单时,键盘应该会自动隐藏,但我无法这样做。
这应该怎么做?
【问题讨论】:
标签: ios swrevealviewcontroller
我将SWRevealViewController 用于侧边菜单,IQKeyboardManagerSwift 用于键盘。
当我在文本字段中编辑内容并尝试打开菜单时,键盘应该会自动隐藏,但我无法这样做。
这应该怎么做?
【问题讨论】:
标签: ios swrevealviewcontroller
捕获打开菜单的事件。您可以使用 SWRevealViewcontroller Delegate 或简单地将 @IBAction 添加到菜单按钮来执行此操作。
在此方法中,为需要键盘的元素(如 textField)调用 .resignFirstResponder():
textField.resignFirstResponder()
当然,您可以在每个可以有键盘的元素中调用此函数,以确保调用正确的键盘。
【讨论】:
由于 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
如果可行,请接受作为答案。(为我工作)
【讨论】: