如何让 iqkeyboardmanager 包含 UISearchBar
Posted
技术标签:
【中文标题】如何让 iqkeyboardmanager 包含 UISearchBar【英文标题】:how to get iqkeyboardmanager to include UISearchBar 【发布时间】:2014-08-15 00:26:42 【问题描述】:我一直在使用IQKeyboardManager
来控制我的应用程序中的键盘。它工作正常,除了 UISearchBar。如何使它与 UISearchBar 一起使用?
【问题讨论】:
【参考方案1】:在 IQKeyboardManager 上明确禁止使用 UISearchBar。
您应该修改 -(BOOL)isSearchBarTextField
方法以在此处返回 NO IQUIView+Hierarchy.m 以使用 UISearchBar。
-(BOOL)isSearchBarTextField
return NO;
【讨论】:
请 Mohd 明确禁用 UISearchBar 的原因是什么?如果您有充分的理由首先排除搜索栏,我宁愿不直接修改库代码。 库只禁用工具栏,因为 UISearchBar 应该使用键盘搜索按钮关闭。 @MohdIftekharQurashi 如何使用 Swift 3.0 做到这一点【参考方案2】:我让它工作到IQUIView+Hierarchy.swift
并评论searchBar()
部分(正如其他人也指出的那样):
if _IQcanBecomeFirstResponder == true
_IQcanBecomeFirstResponder = isUserInteractionEnabled == true &&
isHidden == false && alpha != 0.0 &&
isAlertViewTextField() == false &&
// searchBar() == nil
请注意,不建议直接修改 pod(一个主要问题是在下一个 pod install
时您的更改将被擦除)。
一种解决方案(我也使用)是分叉项目,提交您的更改并修改 podfile
以从您的存储库下载 IQKeyboardManager
。
【讨论】:
非常好的方法来使用你自己的仓库!卓见! upvote 我有手动修改依赖项的经验,这是未来更改的噩梦之源,特别是如果其他人将处理您的代码。【参考方案3】:在“IQUIView+Hierarchy.m”文件中,更改此方法:
-(BOOL)_IQcanBecomeFirstResponder
换行:
BOOL _IQcanBecomeFirstResponder = ([self canBecomeFirstResponder] && [self isUserInteractionEnabled] && ![self isHidden] && [self alpha]!=0.0 && ![self isAlertViewTextField] && ![self isSearchBarTextField]);
收件人:
BOOL _IQcanBecomeFirstResponder = ([self canBecomeFirstResponder] && [self isUserInteractionEnabled] && ![self isHidden] && [self alpha]!=0.0 && ![self isAlertViewTextField]);
您只需从条件中删除![self isSearchBarTextField]
。
【讨论】:
【参考方案4】:我在使用带有 UISearchController 的 IQKeyboardManagerSwift 时遇到了同样的问题。
显然,the official GitHub 上标记为“需要调查”的问题悬而未决。提到的潜在解决方案是:
如果发生以下情况,则不会发生这种情况:
自动调整ScrollViewInsets = false 或 使用 UITableViewController 或 searchController.hidesNavigationBarDuringPresentation = false 或 禁用 IQKeyboardManager
对我来说,
searchController.hidesNavigationBarDuringPresentation = false
干得好!
希望这会有所帮助;)
【讨论】:
以上是关于如何让 iqkeyboardmanager 包含 UISearchBar的主要内容,如果未能解决你的问题,请参考以下文章
IQKeyboardManager - 将 UITextView 移动得太远
IQKeyBoardManager :隐藏特定文本字段的键盘
如何处理工具栏中的 IQKeyboardManager 完成按钮操作?
在 IQKeyboardManager 中始终保持视图位于顶部(不要使用键盘滚动)