ios - iOS 中的键盘处理

标签 ios swift keyboard textfield stackview

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

我真的很想缩小堆栈 View ,换句话说,只有当键盘出现时,才减少所有 3 个 View 之间的空间,而当键盘消失时,将大小设置回来,就像 iOS 上的 Facebook 登录页面一样。

最佳答案

您需要订阅键盘通知并在 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()
    })
}

关于ios - iOS 中的键盘处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50897992/

相关文章:

ios - 应用程序进入后台中断的 UIView 动画的状态是什么?

c# - 在输入编辑框之前如何拦截键盘输入?

ios - 在 Init 函数外初始化类属性

ios - 如何在 handleWatchKitExtensionRequest 中显示 NSLog

ios - NSURLSessionDataTask 在 iOS 后台的同一个 NSURLSession 中的 NSURLSessionDownloadTask 之后没有被调用

swift - FileHandle 不接受我的 URL 进行写访问

swift - 将对象属性分配为另一个对象的函数的输入参数

ios - 增加 AVCapturePhotoOutput 的 maxBracketedCapturePhotoCount 值

assembly - 如何将 ASM 程序包含到我的 Turbo Basic 程序中?

iphone - 数字键盘在完成显示时丢失自定义 UIButton 的奇怪问题