如何让 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 中始终保持视图位于顶部(不要使用键盘滚动)

iOS:如何使用 IQKeyboardManager 更改要聚焦的 UITextField 的顺序

Swift 3 / IQKeyboardManager:如何更改工具栏的背景颜色、完成颜色、箭头颜色?