2

我一直在使用IQKeyboardManager来控制我的应用程序中的键盘。它工作正常,除了 UISearchBar。如何使它与 UISearchBar 一起使用?

4

4 回答 4

6

在 IQKeyboardManager 上明确禁止使用 UISearchBar。

您应该修改-(BOOL)isSearchBarTextField方法以在此处返回 NO IQUIView+Hierarchy.m以使用 UISearchBar。

-(BOOL)isSearchBarTextField
{
    return NO;
}
于 2014-08-17T08:07:01.967 回答
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

于 2018-06-24T09:05:17.927 回答
1

在文件“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]要从条件中删除。

于 2015-06-23T13:51:49.330 回答
1

我在使用带有 UISearchController 的 IQKeyboardManagerSwift 时遇到了同样的问题。

显然,官方 GitHub上的一个问题悬而未决,标记为“需要调查”。提到的潜在解决方案是:

如果出现以下情况,则不会发生这种情况:

  • automaticAdjustsScrollViewInsets = false 或
  • 使用 UITableViewController 或
  • searchController.hidesNavigationBarDuringPresentation = false 或
  • 禁用 IQKeyboardManager

为了我,

searchController.hidesNavigationBarDuringPresentation = false

做的工作!

希望这可以帮助 ;)

于 2017-05-11T11:03:41.457 回答