Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios iPhoneX-基于键盘调整视图_Ios_Swift_Uiview_Keyboard_Constraints - Fatal编程技术网

Ios iPhoneX-基于键盘调整视图

Ios iPhoneX-基于键盘调整视图,ios,swift,uiview,keyboard,constraints,Ios,Swift,Uiview,Keyboard,Constraints,我当前正在尝试根据键盘显示/隐藏的时间调整视图的origin.y。我可以对其进行相应的调整,但是,在iPhone X上,我的调整视图的内容显示在状态栏后面 下面是调整视图的代码 @objc func keyboardWillShow(notification: NSNotification) { if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRect

我当前正在尝试根据键盘显示/隐藏的时间调整视图的origin.y。我可以对其进行相应的调整,但是,在iPhone X上,我的调整视图的内容显示在状态栏后面

下面是调整视图的代码

@objc func keyboardWillShow(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
        if keyboardShown == false{
            self.containerView.frame.origin.y -= keyboardSize.height
            keyboardShown = true
            print("Keyboard UP")
        }
    }
}

@objc func keyboardWillHide(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
        if keyboardShown == true{
            self.containerView.frame.origin.y += keyboardSize.height
            keyboardShown = false
            print("Keyboard DOWN")
        }
    }
它们按预期运行,但不包括内容出现在状态栏后面(并且可见-与时间和信号栏等重叠)

以下是提供视觉表现的屏幕截图:

我正在界面生成器中使用安全区域,并根据安全区域约束了UIElements。但是,在调整view.frame.origin.y时,容器视图(自定义导航栏旁边的所有内容)似乎超出了安全区域


在操作视图时,是否有一种方法可以通过编程方式考虑安全区域?

当然,您想确切知道安全区域的长度吗?我想如果我计划根据键盘的高度向上移动视图,是否有一种方法可以限制视图可以显示的位置?也就是说,一个分界点?此时我正在调整原点。y-我是否必须创建一个考虑y限制(即安全区域的上限)的全新框架?出于实用性考虑,您不应该移动根视图来考虑键盘。相反,您应该调整滚动视图底部内容插入的大小,使其至少等于键盘的高度。这样,内容本身就不会移动,但即使打开键盘,用户也可以滚动到底部。我将尝试一下。谢谢:)