当用户在swift中显示屏幕键盘时,如何移动容器?

时间:2016-04-19 09:05:30

标签: ios swift uikeyboard uitapgesturerecognizer

我有一个UIViewController,其中嵌入了两个容器和一个文本字段。到目前为止,当用户点击文本字段时,整个屏幕向上移动,因此键盘可以适应而不会覆盖容器的下部。 这就是它在我的故事板中的样子:

enter image description here

我的代码如下:

override func viewDidLoad() {
    super.viewDidLoad()
    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
     //    view.addGestureRecognizer(tap)

    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillChangeFrameNotification, object: nil)

}

func keyboardWillShow(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {

        if(isKeyboardShown == false){
            realKeyboardSize = CGRect(x: keyboardSize.origin.x, y: keyboardSize.origin.y, width: keyboardSize.width, height: keyboardSize.height)
            isKeyboardShown = true
            self.view.frame.origin.y -= realKeyboardSize!.height
        }else{
            isKeyboardShown = false
            self.view.frame.origin.y += realKeyboardSize!.height

        }
    }
}

是否可以将下部容器向上移动而不是整个屏幕?

我想它的工作方式如下:

topContainer保持不变,lowerContainer向上移动,使其中一半隐藏在topContainer后面,键盘可见。当用户隐藏键盘时,一切都恢复正常。

2 个答案:

答案 0 :(得分:1)

如果您正在使用autolayout,则可以通过更改底部约束运行时

来实现此目的

这是您的层次结构和相关约束。

enter image description here

有关其工作原理以及如何设置内容,请检查this link

Here is the demo,如果您不理解

答案 1 :(得分:1)

取出容器底部约束的出口,并将其增加到键盘大小或取出顶部约束的出口,并将其减小到键盘大小。希望这会有所帮助:)