【问题标题】:move view up when only keyboard cover textfield当只有键盘覆盖文本字段时向上移动视图
【发布时间】:2019-12-17 21:05:07
【问题描述】:

我正在尝试为 iPhone 快速构建一个输入屏幕。屏幕有许多输入字段。其中大部分位于屏幕顶部,但三个字段位于底部。当用户试图编辑屏幕底部的文本时,键盘会弹出并覆盖屏幕。我找到了一个简单的解决方案,可以在发生这种情况时向上移动屏幕,但结果是屏幕总是向上移动,并且当用户尝试编辑这些字段时,屏幕顶部的字段会移到无法触及的地方。 例如:我想从 txt1 到 txt4 视图不上去。

有没有办法让屏幕只在底部字段被编辑时才移动?

我已经使用了我在这里找到的代码:

覆盖 func viewDidLoad() {

    txt1.delegate = self
    txt2.delegate = self
    txt3.delegate = self
    txt4.delegate = self
    txt5.delegate = self
    txt6.delegate = self
    txt7.delegate = self
    txt8.delegate = self
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)

}

func keyboardWillShow(notification: NSNotification) {

    if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
        if view.frame.origin.y == 0 {
            self.view.frame.origin.y -= keyboardSize.height
        }
        }

}

@objc func keyboardWillHide(notification: NSNotification) {
    if view.frame.origin.y != 0 {
        self.view.frame.origin.y = 0
    }
}

**

【问题讨论】:

标签: ios swift iphone xcode ipad


【解决方案1】:

我在开始编辑文本字段时执行此功能以开始显示键盘:

   public func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool{
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)

      NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)

}

但在这里它适用于我拥有的所有文本字段及其相同的问题。 如何为特定的文本字段制作它?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2011-08-23
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多