键盘在推动时从不透明变为透明

时间:2018-04-01 14:47:27

标签: ios objective-c

我在导航和标签栏控制器中嵌入了一个视图。当按下按钮时,它会按下(显示)下一个视图,并且我编程键盘以立即显示第一个文本字段[textField becomeFirstResponder]

但是,键盘会立即变得不透明,然后在不到半秒的时间内变为透明。无论键盘类型或键盘外观如何都会发生这种情况。我不知道造成这种情况的原因,我在其他地方找不到任何答案。

其他细节:导航栏是半透明的,底部栏隐藏在我们推送的视图上。背景是图像。如果我删除[textField becomeFirstResponder]并让用户只选择文本字段,则不会出现此问题,但这不是我想要做的。

1 个答案:

答案 0 :(得分:0)

我有类似的情况,也遇到了这个问题。

我在视图控制器之间进行推送,键盘必须在segue期间保持运行(textField.becomeFirstResponder()中调用viewWillAppear(_:))。视图控制器'背景为白色,但键盘外观为Dark。在segue期间,键盘是黑色的,然后在segue完成后立即变为灰色。

我想出了一个解决方法 - 如果你想让键盘始终处于不透明状态,它就可以工作。

将空UIView添加到要立即显示键盘的视图控制器,并设置视图的backgroundColor以匹配键盘的外观({{1为黑色) },白色为Dark)。将视图固定到视图控制器的安全区域 superview的左,右和下边缘。添加一个等于0的高度约束并为其创建Light

在视图控制器中,订阅IBOutletKeyboardWillShow通知并控制您创建的视图的高度限制 - 使其与键盘的框架高度相匹配(键盘'框架结束)。

你仍会看到在segue期间,键盘保持不透明,但当segue完成并且键盘透明度开始时,效果更不明显。

对我来说理想的情况是能够完全关闭键盘的透明度,但我认为这不可能。我也认为在segue期间没有办法让键盘不透明,所以唯一的选择就是让它一直看起来不透明。