IQKeyboardManagerSwift 黑框问题

问题:

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

IQKeyboardManagerSwift 黑框问题_第1张图片

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

IQKeyboardManagerSwift 黑框问题_第2张图片

分析:

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

IQKeyboardManagerSwift 黑框问题_第3张图片

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

IQKeyboardManagerSwift 黑框问题_第4张图片

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

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

解决方法:

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

IQKeyboardManagerSwift 黑框问题_第5张图片

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

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

viewController.extendedLayoutIncludesOpaqueBars = true

即可

你可能感兴趣的:(IQKeyboardManagerSwift 黑框问题)