美文网首页iOS开发-键盘
IQKeyboardManagerSwift 黑框问题

IQKeyboardManagerSwift 黑框问题

作者: 九龙 | 来源:发表于2018-07-06 10:23 被阅读111次

问题:

在使用IQKeyboardManagerSwift时,如果自定义了UINavigationController,并设置了navigationBar.isTranslucent = false 即导航栏不透明,如果页面弹出键盘后再返回,就会发现返回的时候ViewController的视图往下移了,出现一条逐渐变高的黑框

如果在viewDidLoad里面设置了textField.becomeFirstResponder()  push出界面后,在点击关闭键盘就会出现底部有一条黑框

分析:

以上分析了未收起键盘的时候的视图层级结构发现:如图

收起键盘后的视图层级结构发现:

发现ViewController整体上移了64px,所以下方出现了黑框

分析:从iOS7开始,UIViewController默认使用全屏布局,并增加了edgesForExtendedLayout、automaticallyAdjustsScrollViewInsets及extendedLayoutIncludesOpaqueBars这三个属性用于控制布局,相信就不再介绍了看别人的对比:edgesForExtendedLayout、automaticallyAdjustsScro... - 简书

解决方法:

如果是使用的storyboard直接勾选控制器的 Under Opaque Bars 选项即可

如果是代码在viewDidLoad方法里面 extendedLayoutIncludesOpaqueBars = true即可

如果控制器太多,我想到的最直接的是在自定义的UINavigationController的重写pushViewController方法里面设置

viewController.extendedLayoutIncludesOpaqueBars = true

即可

相关文章

网友评论

    本文标题:IQKeyboardManagerSwift 黑框问题

    本文链接:https://www.haomeiwen.com/subject/ihvuqttx.html