ios – UITableView在一个地方解散reloadData上的键盘,但在另一个地方却没有?

ios – UITableView在一个地方解散reloadData上的键盘,但在另一个地方却没有?,第1张

概述我正在从刚开始的新工作中筛选出已存在的代码,而我遇到的第一个错误之一是附加到UITableView子类的搜索栏,它在每次击键后都会解除键盘.经过一番搜索,我找到了 this SO question,似乎我找到了答案:应用程序在每次击键后都使用reloadData刷新结果,重新加载调用resignFirstResponder并解除键盘.令人沮丧,但解释和理解. 但后来我的老板指出我们在应用程序的其他 我正在从刚开始的新工作中筛选出已存在的代码,而我遇到的第一个错误之一是附加到UItableVIEw子类的搜索栏,它在每次击键后都会解除键盘.经过一番搜索,我找到了 this SO question,似乎我找到了答案:应用程序在每次击键后都使用reloadData刷新结果,重新加载调用resignFirstResponder并解除键盘.令人沮丧,但解释和理解.

但后来我的老板指出我们在应用程序的其他地方几乎使用完全相同的代码,并且它完美地工作.怎么会这样?我发现自己处于一个不寻常的位置,需要解释为什么会有效,因为上面的链接表明在reloadData期间解雇键盘是“正常”行为.

下面是来自两个VIEwControllers的相关方法,每个VIEwControllers都是从同一个自定义UItableVIEw子类化的. (这些方法已经简化了,但是不同的行为仍然存在.)我的一部分认为它必须是两个子类之间存在差异的东西,但是如果reloadData是问题并且它没有在任何地方被覆盖,那么这意味着子类是无关紧要的?

查看视图:

- (voID)searchbar:(UISearchbar *)searchbar textDIDChange:(Nsstring *)searchText{    [self.tableVIEw reloadData];    NSLog(@"Lookup Reloaded");}

搜索视图:

- (voID)searchbar:(UISearchbar *)searchbar textDIDChange:(Nsstring *)searchText{    [self.tableVIEw reloadData];    NSLog(@"Search Reloaded");}

如您所见,它们完全相同.在每次击键后都成功调用两者,但前者解除键盘而后者则没有.

这些视图控制器中的每一个都超过一千行,所以我很难缩小可能导致不同行为的原因.了解FirstResponders和tableVIEw重新加载的人可以帮我一些关于在哪里寻找的线索吗?这似乎是一个相当简单的过程(按下一个键>该方法被称为>它重新加载表>键盘在此过程中被解除)没有太大的空间来改变这种行为,但显然有一种方法可以防止这种情况发生.最后一步,因为搜索视图已经在做了.

知道我应该把注意力集中在哪里找出原因吗?

解决方法 检查此方法是否已在此UISearchbar的任一委托上实现.

- (BOol)searchbarShouldEndEditing:(UISearchbar *)searchbar;

如果此方法返回NO,则会阻止搜索栏重新签署第一个响应者.

总结

以上是内存溢出为你收集整理的ios – UITableView在一个地方解散reloadData上的键盘,但在另一个地方却没有?全部内容,希望文章能够帮你解决ios – UITableView在一个地方解散reloadData上的键盘,但在另一个地方却没有?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1060692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存