我一直在使用IQKeyboardManager
来控制我的应用程序中的键盘。它工作正常,除了 UISearchBar。如何使它与 UISearchBar 一起使用?
问问题
3940 次
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 回答