Ios 4.7英寸视图的中心不是333.5?

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语句,用于检测键盘出现时是否向上移动视图。我有一个单独的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,那么它就会工作,这就是问题所在。我试着把数字凑到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+故事板搞混了。