我在导航和标签栏控制器中嵌入了一个视图。当按下按钮时,它会按下(显示)下一个视图,并且我编程键盘以立即显示第一个文本字段[textField becomeFirstResponder]
。
但是,键盘会立即变得不透明,然后在不到半秒的时间内变为透明。无论键盘类型或键盘外观如何都会发生这种情况。我不知道造成这种情况的原因,我在其他地方找不到任何答案。
其他细节:导航栏是半透明的,底部栏隐藏在我们推送的视图上。背景是图像。如果我删除[textField becomeFirstResponder]
并让用户只选择文本字段,则不会出现此问题,但这不是我想要做的。
答案 0 :(得分:0)
我有类似的情况,也遇到了这个问题。
我在视图控制器之间进行推送,键盘必须在segue期间保持运行(textField.becomeFirstResponder()
中调用viewWillAppear(_:)
)。视图控制器'背景为白色,但键盘外观为Dark
。在segue期间,键盘是黑色的,然后在segue完成后立即变为灰色。
我想出了一个解决方法 - 如果你想让键盘始终处于不透明状态,它就可以工作。
将空UIView
添加到要立即显示键盘的视图控制器,并设置视图的backgroundColor
以匹配键盘的外观({{1为黑色) },白色为Dark
)。将视图固定到视图控制器的安全区域 superview的左,右和下边缘。添加一个等于0的高度约束并为其创建Light
。
在视图控制器中,订阅IBOutlet
和KeyboardWillShow
通知并控制您创建的视图的高度限制 - 使其与键盘的框架高度相匹配(键盘'框架结束)。
你仍会看到在segue期间,键盘保持不透明,但当segue完成并且键盘透明度开始时,效果更不明显。
对我来说理想的情况是能够完全关闭键盘的透明度,但我认为这不可能。我也认为在segue期间没有办法让键盘不透明,所以唯一的选择就是让它一直看起来不透明。