【问题标题】:Keyboard handling in iOSiOS 中的键盘处理
【发布时间】:2018-06-17 15:21:36
【问题描述】:

我的申请有问题。我实际上正在构建一个登录页面,当文本字段处于活动状态时,我找不到如何处理键盘。 我在一个视图中有两个文本字段。在我的 superView 中,我有 3 个视图。一个在底部,另一个在中间,最后一个在顶部。 这 3 个视图嵌入在一个堆栈视图中。

我真的很想缩小堆栈视图,换句话说,只有在键盘出现时才缩小所有 3 个视图之间的空间,并在键盘消失时重新设置大小,就像 iOS 上的 Facebook 登录页面。

【问题讨论】:

    标签: ios swift keyboard textfield stackview


    【解决方案1】:

    您需要订阅键盘通知并在 viewDidLoad 中执行此操作

    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: .UIKeyboardWillHide, object: nil)
    

    //

    @objc func keyboardWillShow(notification: NSNotification) {
       self.stackV.spacing = 10
        UIView.animate(withDuration: 0.3, animations: { () -> Void in
            self.view.layoutIfNeeded()
        })
    }
    
    @objc func keyboardWillHide(notification: NSNotification) {
        self.stackV.spacing = // set back to default
        UIView.animate(withDuration: 0.3, animations: { () -> Void in
            self.view.layoutIfNeeded()
        })
    }
    

    【讨论】:

    • 非常感谢您的帮助。问题是我的堆栈视图分布设置为等间距,因此我的间距值默认设置为 0。你认为我应该从堆栈视图中移除我的视图并手动添加动画吗?
    • 查看钩子stackView的高度约束并改变它或它的底部约束
    • 我几分钟前刚试过,但它不起作用。我认为我应该将每个视图嵌入到堆栈视图中,并将每个堆栈嵌入到一个大堆栈中。那它会更容易收缩吗?
    猜你喜欢
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    相关资源
    最近更新 更多