UITableView 背景上的 UIGestureRecognizer
UIGestureRecognizer on background of UITableView
我目前正在创建一个带有自定义单元格的 UITableView,以允许用户搜索其他用户。当 table 充满数据(用户名)时,效果很好。当检测到点击时,我检查键盘是否可见,如果是,我关闭键盘。如果未显示键盘,它会推送到包含用户配置文件的 UIViewController。这是这样做的代码:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if(keyboardShowing) {
dismissKeyboard()
return
}
let userVC = UserController()
let navViewController = tabBarController?.selectedViewController as? UINavigationController
userVC.profileUserID = resultUsers[indexPath.row].userID
navViewController?.pushViewController(userVC, animated: true)
}
但是,当只有一行时(例如搜索 returns 一个用户),我希望能够在行外单击以允许用户关闭键盘。我尝试了以下方法:
let tableBGTap = UITapGestureRecognizer(target: self, action: #selector(self.dismissKeyboard))
self.userList.backgroundView?.addGestureRecognizer(tableBGTap)
虽然这不起作用。关于如何实现我想要的目标的任何想法?长话短说:如果我的 UITableView 中填满整个屏幕的行数较少,我希望能够点击行下方的 "background"。
原因
self.userList.backgroundView?.addGestureRecognizer(tableBGTap)
无效,因为 backgroundView
是 nil
。因此,你应该做的是:
userList.backgroundView = UIView()
self.userList.backgroundView?.addGestureRecognizer(tableBGTap)
请注意 如果您要为 table 视图设置背景颜色:
userList.backgroundColor = .red
不会再显示了。作为解决方法,您可以为背景视图本身添加颜色:
userList.backgroundView = UIView()
userList.backgroundView?.backgroundColor = .red
userList.backgroundView?.addGestureRecognizer(tapper)
我目前正在创建一个带有自定义单元格的 UITableView,以允许用户搜索其他用户。当 table 充满数据(用户名)时,效果很好。当检测到点击时,我检查键盘是否可见,如果是,我关闭键盘。如果未显示键盘,它会推送到包含用户配置文件的 UIViewController。这是这样做的代码:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if(keyboardShowing) {
dismissKeyboard()
return
}
let userVC = UserController()
let navViewController = tabBarController?.selectedViewController as? UINavigationController
userVC.profileUserID = resultUsers[indexPath.row].userID
navViewController?.pushViewController(userVC, animated: true)
}
但是,当只有一行时(例如搜索 returns 一个用户),我希望能够在行外单击以允许用户关闭键盘。我尝试了以下方法:
let tableBGTap = UITapGestureRecognizer(target: self, action: #selector(self.dismissKeyboard))
self.userList.backgroundView?.addGestureRecognizer(tableBGTap)
虽然这不起作用。关于如何实现我想要的目标的任何想法?长话短说:如果我的 UITableView 中填满整个屏幕的行数较少,我希望能够点击行下方的 "background"。
原因
self.userList.backgroundView?.addGestureRecognizer(tableBGTap)
无效,因为 backgroundView
是 nil
。因此,你应该做的是:
userList.backgroundView = UIView()
self.userList.backgroundView?.addGestureRecognizer(tableBGTap)
请注意 如果您要为 table 视图设置背景颜色:
userList.backgroundColor = .red
不会再显示了。作为解决方法,您可以为背景视图本身添加颜色:
userList.backgroundView = UIView()
userList.backgroundView?.backgroundColor = .red
userList.backgroundView?.addGestureRecognizer(tapper)