IQKeyboardManager 设置键盘距离不合适

IQKeyboardManager 设置 keyboardDistance 后 距离总是感觉比实际的大很多。之前都忽略了这个问题。
今天看了一下源码,
IQKeyboardManager 计算键盘高度的时候会增加一个safeArea.bottom. 实际键盘高度已经包含了safeArea.bottom。
第二个原因。IQKeyboardManager会适配directionalLayoutMargins布局。弹出键盘时,textfield父视图移动会考虑directionalLayoutMargins.bottom的距离, textView父视图移动没有考虑。 不知道为什么。
而系统directionalLayoutMargins会自动从safeArea获取。
可以使用 [UIView appearance].insetsLayoutMarginsFromSafeArea = false; // 禁用系统directionalLayoutMargins自动从safeArea获取, 避免IQKeyboardManager 对 textfield 距离叠加
或者单独页面单独设置

所以
[UIView appearance].insetsLayoutMarginsFromSafeArea = false;
if (kSafeAreaBottom > 0) {
[IQKeyboardManager shared].keyboardDistance = 30-kSafeAreaBottom;
} else {
[IQKeyboardManager shared].keyboardDistance = 30;
}
这样设置带不带安全区域的textField到键盘的距离都一样了。 试了几个手机没问题了

记录一下我的IQKeyboardManagerSwift的设置

 [UIView appearance].insetsLayoutMarginsFromSafeArea = false; // 禁用系统directionalLayoutMargins自动从safeArea获取, 避免IQKeyboardManager  对 textfield 距离叠加
    [[IQKeyboardManager shared] setIsEnabled:true];
    [IQKeyboardManager shared].resignOnTouchOutside = true;
    if (kSafeAreaBottom > 0) {
        // IQKeyboardManager 键盘高度计算时增加了个kSafeAreaBottom, 系统键盘高度会自动加上kSafeAreaBottom,不需要IQKeyboardManager再增加一个了
        [IQKeyboardManager shared].keyboardDistance = 30-kSafeAreaBottom;
        
    } else {
        [IQKeyboardManager shared].keyboardDistance = 30;
    }
    [IQKeyboardToolbarManager shared].isEnabled = true;
    IQKeyboardToolbarConfiguration *barConfig = [IQKeyboardToolbarManager shared].toolbarConfiguration;
    barConfig.previousNextDisplayMode = IQPreviousNextDisplayModeAlwaysHide;
    IQKeyboardToolbarPlaceholderConfiguration *placeholderConfig = barConfig.placeholderConfiguration;
    placeholderConfig.showPlaceholder = false;
    IQBarButtonItemConfiguration *doneConfig = [[IQBarButtonItemConfiguration alloc] initWithTitle:@"Done" action:nil];
    barConfig.doneBarButtonConfiguration = doneConfig;
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容