如何在按下导航栏时隐藏 swift 中的键盘
How to hide keyboard in swift on press of navigationBar
我正在开发一个 swift 3 应用程序,每个页面都有一个导航栏。导航栏的左侧也有一个按钮。
我需要在触摸屏幕上的任何对象时退出键盘。
我尝试了通常的
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
但它适用于除导航栏之外的视图的所有其他部分。
我尝试添加以下代码:
self.navigationController?.navigationBar.endEditing(true)
添加到 touchesBegan
功能,但它不起作用,可能是因为我没有导航控制器,我只是在情节提要中添加了搜索栏。
如何让键盘在点击导航栏时退出,包括导航栏中的按钮?
这对我的应用很重要,因为如下所示,它是最大的 space 可供用户在不更改视图的情况下点击。
我需要在黄色圈出的区域进行辞职工作,包括箭头所示的按钮。
在按钮上调用菜单之前,在按钮操作中调用此行:
YourSearchOutlet.resignFirstResponder()
尝试在导航栏上添加点击手势:
override func viewDidLoad() {
super.viewDidLoad()
let navSingleTap = UITapGestureRecognizer.init(target: self, action: #selector(self.tap(_:)))
navSingleTap.numberOfTapsRequired = 1
self.navigationController?.navigationBar.subviews[1].isUserInteractionEnabled = true
self.navigationController?.navigationBar.subviews[1].addGestureRecognizer(navSingleTap)
}
func tap() {
// do your work
}
例如
override func viewDidLoad() {
super.viewDidLoad()
let hideKeyboard = UITapGestureRecognizer(target: self, action: #selector(self.navigationBarTap))
hideKeyboard.numberOfTapsRequired = 1
navigationController?.navigationBar.addGestureRecognizer(hideKeyboard)
}
并将动作处理为
func navigationBarTap(_ recognizer: UIGestureRecognizer) {
view.endEditing(true)
// OR USE yourSearchBarName.endEditing(true)
}
Subclass UINavigationBar 并将其设置为故事板中导航栏的自定义class。
// NavigationBar.swift
import UIKit
class NavigationBar: UINavigationBar {
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.window?.endEditing(true)
}
}
我正在开发一个 swift 3 应用程序,每个页面都有一个导航栏。导航栏的左侧也有一个按钮。 我需要在触摸屏幕上的任何对象时退出键盘。 我尝试了通常的
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
但它适用于除导航栏之外的视图的所有其他部分。 我尝试添加以下代码:
self.navigationController?.navigationBar.endEditing(true)
添加到 touchesBegan
功能,但它不起作用,可能是因为我没有导航控制器,我只是在情节提要中添加了搜索栏。
如何让键盘在点击导航栏时退出,包括导航栏中的按钮?
这对我的应用很重要,因为如下所示,它是最大的 space 可供用户在不更改视图的情况下点击。
我需要在黄色圈出的区域进行辞职工作,包括箭头所示的按钮。
在按钮上调用菜单之前,在按钮操作中调用此行:
YourSearchOutlet.resignFirstResponder()
尝试在导航栏上添加点击手势:
override func viewDidLoad() {
super.viewDidLoad()
let navSingleTap = UITapGestureRecognizer.init(target: self, action: #selector(self.tap(_:)))
navSingleTap.numberOfTapsRequired = 1
self.navigationController?.navigationBar.subviews[1].isUserInteractionEnabled = true
self.navigationController?.navigationBar.subviews[1].addGestureRecognizer(navSingleTap)
}
func tap() {
// do your work
}
例如
override func viewDidLoad() {
super.viewDidLoad()
let hideKeyboard = UITapGestureRecognizer(target: self, action: #selector(self.navigationBarTap))
hideKeyboard.numberOfTapsRequired = 1
navigationController?.navigationBar.addGestureRecognizer(hideKeyboard)
}
并将动作处理为
func navigationBarTap(_ recognizer: UIGestureRecognizer) {
view.endEditing(true)
// OR USE yourSearchBarName.endEditing(true)
}
Subclass UINavigationBar 并将其设置为故事板中导航栏的自定义class。
// NavigationBar.swift
import UIKit
class NavigationBar: UINavigationBar {
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.window?.endEditing(true)
}
}