iphone - 如何在不破坏控件的情况下判断用户何时点击或拖动控件?

标签 iphone ios xamarin.ios

这是我的情况:我在导航 Controller 中有一个 UISearchBar 和一个 UITableView。当用户点击搜索栏时,键盘弹出,用户可以输入搜索字符串,如下所示:

enter image description here

但是键盘遮盖了列表,所以我想做到这一点,如果用户点击表格,键盘就会消失,我遇到了很多困难。

  1. 如果我使用 TapGestureRecognizer,我可以判断用户是否点击了任何地方,但是当他们点击表格时,正常的表格事件不起作用。
  2. 我尝试了其他方法(现在不记得是什么了),如果用户点击表格而不是点击和拖动,我会收到事件,这很常见,所以这还不够。

我想要的是类似于表格本身的 TouchDownInside 事件,这样我就可以在表格收到任何类型的用户输入时关闭键盘,但这似乎不存在。执行此操作的最佳方法是什么?

最佳答案

一个简单的解决方案是在 UITableView 滚动时捕捉,因为 UITableView 扩展了 UIScrollView,您可以查找 scrollViewDidScroll: 并使搜索栏退出第一响应者以使键盘消失,同样可以使用scrollViewWillBeginDragging: 方法

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    [searchBar resignFirstResponder];
}

在你的 UITableViewDelegate 上实现它,因为它充当你的 UITableView 的委托(delegate)

更多信息在

http://developer.apple.com/library/ios/documentation/uikit/reference/uiscrollviewdelegate_protocol/

关于iphone - 如何在不破坏控件的情况下判断用户何时点击或拖动控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505507/

相关文章:

ios - sectionForSectionIndexTitle 和 sectionIndexTitlesForTableView 未在 swift 3 中调用

iphone - 为添加的 subview Controller 调用 willrotate 方法

ios - Iphone 启动画面永远不会消失

iOS 捕获 UIView 里面有 UIImageView

binding - 无法链接 MonoTouch 项目中的 native 库 - 找不到 -lName 的库

iphone - 在 Objective-C XCode 中将常量链接到 pch 时出错

iphone - 为 iPhone 本地化带有文本的图像的最佳方法是什么?

ios - 增加 UINavigationBarLargeTitleView 的高度

xamarin.ios - 在 iOS8 的 UITextField 中检测退格

c# - 创建一个使用 CAGradientLayer 作为其层的 UIView 子类