ios - 当只有键盘覆盖文本字段时向上移动 View

标签 ios swift iphone xcode ipad

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

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

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

override 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
    }
}

最佳答案

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

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)
}

但这里它适用于我拥有的所有文本字段,并且存在同样的问题。 我怎样才能为特定的文本字段制作它?

关于ios - 当只有键盘覆盖文本字段时向上移动 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59382051/

相关文章:

ios - 我有一个库文件(.a)。我怎样才能从这里向后获取一些伪源代码?

ios - DTCoreText 图像不显示

iphone - 如何使用 XCode 3.1.3 制作 iPhone OS 2.2 项目?

iphone - 适用于 Mac/iPhone 的 xUnit 测试框架

ios - 自定义 UITextField 委托(delegate)设置为自启动无限循环

ios - xcode 图形场景不可见

swift - bezierpath View 上的阴影为角落添加了奇怪的笔触

swift - 如何检测可观察对象是否在 RxSwift 中的特定时间未发出任何事件

ios - Xcode build设置和 Scheme 环境变量之间的区别

iphone - xcode sqlite3 libsqlite.dylib