Ios 4.7英寸视图的中心不是333.5?
我的应用程序中有一个if语句,用于检测键盘出现时是否向上移动视图。我有一个单独的3.5/4、4.7和5.5英寸屏幕 3.5/4和5.5英寸屏幕的功能非常好,但是由于某些原因,4.7英寸屏幕的功能不正常 这是我的代码:Ios 4.7英寸视图的中心不是333.5?,ios,uiview,swift,Ios,Uiview,Swift,我的应用程序中有一个if语句,用于检测键盘出现时是否向上移动视图。我有一个单独的3.5/4、4.7和5.5英寸屏幕 3.5/4和5.5英寸屏幕的功能非常好,但是由于某些原因,4.7英寸屏幕的功能不正常 这是我的代码: if keyboardActive == false && height == 667 && self.entryView.center.y == 333.5 { 如果我删除self.entryView.center.y==333.5,那么
if keyboardActive == false && height == 667 && self.entryView.center.y == 333.5 {
如果我删除self.entryView.center.y==333.5,那么它就会工作,这就是问题所在。我试着把数字凑到334,再凑到333,但没用
有人知道为什么中心y值不是333.5吗?比较浮点数是有问题的。例如,见:() 基于文字移动屏幕也有问题。最好是在视图局部坐标中获取键盘框架,并相应地调整视图大小。请注意,如果使用约束,则必须调整约束,而不是视图的框架 下面是我为此编写的一个方便的函数:
private func extractKeyboardInfo(userInfo: NSDictionary) -> (keyboardFrame: CGRect, duration: NSTimeInterval, viewAnimationOptions: UIViewAnimationOptions) {
let globalKeyboardFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as NSValue).CGRectValue()
let localKeyboardFrame = self.view.convertRect(globalKeyboardFrame, fromView: nil)
let curve = UInt((userInfo[UIKeyboardAnimationCurveUserInfoKey] as NSNumber).unsignedIntValue << 16)
let viewAnimationOptions = UIViewAnimationOptions.fromRaw(curve)!
let duration = (userInfo[UIKeyboardAnimationDurationUserInfoKey] as NSNumber).doubleValue as NSTimeInterval
return (localKeyboardFrame, duration, viewAnimationOptions)
}
private func extractKeyboardInfo(userInfo:NSDictionary)->(键盘框:CGRect,持续时间:NSTimeInterval,viewAnimationOptions:UIViewAnimationOptions){
让globalKeyboardFrame=(userInfo[UIKeyboardFrameEndUserInfoKey]作为NSValue.CGRectValue()
让localKeyboardFrame=self.view.convertRect(globalKeyboardFrame,fromView:nil)
让curve=UInt((用户信息[UIKeyboardAnimationCurveUserInfo]作为NSNumber)。unsignedIntValue self.entryView.center.y
实际返回的是什么?啊,明显的错误。返回368,因为我把6和6+故事板搞混了。