在不调用 didSelectRowAtIndexPath 的情况下关闭键盘
Dissmissing Keyboard without Calling didSelectRowAtIndexPath
我有一个 ViewController
,它有 textSearchTableView:UITableView
和 searchBar:UISearchBar
我添加了UITapGestureRecognizer
来关闭键盘
override func viewDidLoad() {
// ...
self.tap = UITapGestureRecognizer(target: self, action: "DissmissKeyboard")
self.tap.delegate = self
self.view.addGestureRecognizer(self.tap)
// ...
}
func DissmissKeyboard()
{
view.endEditing(true)
}
我添加了此功能以防止在选择单元格后破坏 (didSelectRowAtIndexPath) 功能
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
if touch.view.isDescendantOfView(self.textSearchTableView) {
return false
}
return true
}
但问题是:当键盘启用时我想关闭它,
如果我单击 textSearchTableView,(didSelectRowAtIndexPath) 将 运行
如果我在不调用 (didSelectRowAtIndexPath) 的情况下单击 tableView
,如何关闭键盘?我也不想破坏这个功能
希望我把问题描述的很好
非常感谢
让你的 tableview 的委托 return nil for
怎么样
- (NSIndexPath *)tableView:(UITableView *)tableView
willSelectRowAtIndexPath:(NSIndexPath *)indexPath
因为 willSelectRowAtIndexPath
可能是您想要的,但不是您要求的:通过发送第一响应者 resignFirstResponder
来关闭键盘,以便回答实际问题。
像这样重写你的didSelectRowAtIndexPath
:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if (self.searchBar.isFirstResponder())
{
self.searchBar.resignFirstResponder()
}
else
{
//Do something here
}
}
或者:我们通常在表格视图中使用这种方法。
self.tableView.keyboardDismissMode = .OnDrag
这将在表格视图中开始拖动时关闭键盘。
我有一个 ViewController
,它有 textSearchTableView:UITableView
和 searchBar:UISearchBar
我添加了UITapGestureRecognizer
来关闭键盘
override func viewDidLoad() {
// ...
self.tap = UITapGestureRecognizer(target: self, action: "DissmissKeyboard")
self.tap.delegate = self
self.view.addGestureRecognizer(self.tap)
// ...
}
func DissmissKeyboard()
{
view.endEditing(true)
}
我添加了此功能以防止在选择单元格后破坏 (didSelectRowAtIndexPath) 功能
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
if touch.view.isDescendantOfView(self.textSearchTableView) {
return false
}
return true
}
但问题是:当键盘启用时我想关闭它,
如果我单击 textSearchTableView,(didSelectRowAtIndexPath) 将 运行
如果我在不调用 (didSelectRowAtIndexPath) 的情况下单击 tableView
,如何关闭键盘?我也不想破坏这个功能
希望我把问题描述的很好 非常感谢
让你的 tableview 的委托 return nil for
怎么样- (NSIndexPath *)tableView:(UITableView *)tableView
willSelectRowAtIndexPath:(NSIndexPath *)indexPath
因为 willSelectRowAtIndexPath
可能是您想要的,但不是您要求的:通过发送第一响应者 resignFirstResponder
来关闭键盘,以便回答实际问题。
像这样重写你的didSelectRowAtIndexPath
:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if (self.searchBar.isFirstResponder())
{
self.searchBar.resignFirstResponder()
}
else
{
//Do something here
}
}
或者:我们通常在表格视图中使用这种方法。
self.tableView.keyboardDismissMode = .OnDrag
这将在表格视图中开始拖动时关闭键盘。