无法与 UITableView 中的 UISearchBar 交互

Posted

技术标签:

【中文标题】无法与 UITableView 中的 UISearchBar 交互【英文标题】:Unable to Interact with UISearchBar in a UITableView 【发布时间】:2013-11-21 21:54:00 【问题描述】:

问题

我有一个 UIGestureRecognizer 设置,在按下我的 UITableView 中的任何 UITableViewCell 时,它会将 UISearchBar 设置为活动状态。一切正常。我可以按下单元格,UISearchBar 会像往常一样进行动画处理。我可以输入字母,点击并按住 UITextField 并放大到特定的光标位置。我可以点击取消,一切都会回到正确的位置。

这就是问题所在。我向下滚动几个单元格(或直到 UISearchBar 隐藏在 UINavigationBar 下)并按下单元格以激活 UISearchBar。一切似乎都动画到了它们的正确位置,但是当我尝试点击并按住以放大到文本字段上的正确光标时,什么也没有发生。我也无法点击取消按钮。奇怪的是,如果我按下 UISearchBar 的任何部分,它就会成为第一响应者。

我做过的事情

我使用了 searchResultsTableView 的 contentInset,看看它是否阻塞了 UISearchBar。 我玩弄了 searchResultsTableView 的框架及其父视图,看看它是否阻塞了 UISearchBar。 我添加了 UISearchDisplayDelegate 协议中定义的方法,并确保没有任何视图阻止了所述 UISearchBar。

请帮忙!

我的目标是能够按预期与 UISearchBar 进行交互。如果您知道任何其他选择,请告诉我!

提前谢谢你!!

更新

我在Programmatically activating UISearchBar blocks user interactions with it找到了答案

当 UISearchBar 显示和激活时可能存在时间问题,因此解决方案是延迟激活它。

【问题讨论】:

【参考方案1】:

因此,当您向下滚动时,由于 ios 尝试重用单元格以节省内存,tableview 实际上并没有引用原始单元格。解决这个问题的方法是在cellForIndexPath函数中说if(indexPath.row==0)cell.contentview addGesture...或者使用didSelectAtIndexPath函数来指定点击indexPath.row 0时会发生什么

【讨论】:

我在 cellForIndexPath 中添加手势。我遇到的问题是 UISearchBar 在 UINavigationBar 下滚动时无法正常运行(无法点击取消按钮,无法点击n按住缩放/移动光标)。 哦,好吧,也许我误解了你的问题。所以你有一个嵌入在单元格中的搜索栏?当你在单元格内点击它时它不起作用? 我想将此图像添加到我的问题中以帮助潜在的帮助者,但我似乎没有正确的声誉:( imgur.com/7YdpL1H UISearchBar 嵌入在 UITableView 中。我希望这个帮助,谢谢! 所以...死神更新的问题(基本上是他/她的解决方案)对我有用。当 UISearchBar 被激活并成为第一响应者时,似乎存在时间问题。谢谢内特的回复! ***.com/q/19688500/798958

以上是关于无法与 UITableView 中的 UISearchBar 交互的主要内容,如果未能解决你的问题,请参考以下文章

UIView中的UITableView与swift

无法重新加载 UITableView

UITableView中的自定义单元类与静态单元格

UITableView添加UITapGestureRecognizer与didSelectRowAtIndexPath冲突解决方法

无法解析 uitableview 中的 json 文件

无法摆脱分组 UITableView 中的部分背景颜色