
对于iOS10设备,我使用此逻辑来检测,如果键盘将隐藏特定的输入字段(在我的情况下是文本字段).如果是这种情况,键盘将显示在最后一个活动文本字段下,以使用户能够正确输入.
对于iOS 11,键盘高度的识别不起作用.
键盘的Helper类示例将显示逻辑
这只是keyBoarDWillShow所做的一个例子 – >它只是检查,如果视图需要移动到键盘上方,如果键盘将隐藏文本字段.
我做了一些调试,发现下面的代码行在iOS 10和iOS 11之间的工作方式不同:
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue
iOS10调试器输出
keyboardSize CGRect(origin =(x = 0,y = 568),size =(wIDth = 320,height = 216))
iOS11调试器输出
keyboardSize CGRect(origin =(x = 0,height = 0))
下面你可以看到完整的代码 – 它一直工作到iOS 10.3
func keyboarDWillShow(notification: NSNotification,vIEw: UIVIEw,activeTextFIEld: UITextFIEld?,scrollVIEw: UIScrollVIEw?) { if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue { if vIEw.frame.origin.y == 0{ var aRect : CGRect = (vIEw.vIEwWithTag(2)?.frame)! aRect.size.height -= keyboardSize.height if let activeFIEld = activeTextFIEld { let tempPoint = CGPoint(x: activeFIEld.frame.origin.x,y: activeFIEld.frame.origin.y + 20) if (aRect.size.height < tempPoint.y){ vIEw.frame.origin.y -= keyboardSize.height if let scrollVIEw = scrollVIEw { let bottomOffset = CGPoint(x: 0,y: scrollVIEw.contentSize.height - scrollVIEw.bounds.size.height) scrollVIEw.setContentOffset(bottomOffset,animated: true) } } } } }} 更新2017/09/20
我现在试了好几次.有时它会显示iOS11的键盘高度值 – 现在我完全糊涂了……
使用UIKeyboardFrameEndUserInfoKey代替UIKeyboardFrameBeginUserInfoKey 总结以上是内存溢出为你收集整理的swift iOS11 – 识别keyboardSize高度不再起作用全部内容,希望文章能够帮你解决swift iOS11 – 识别keyboardSize高度不再起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)