键盘出现时向上移动视图,但仅适用于设备X.

时间:2017-12-01 22:55:21

标签: ios swift

我无法在这里为我的问题找到解决方案,这似乎只是常规"当键盘出现时向上移动视图的一小步#"

虽然这正是我的需要,但我想在iPhone 5S或iPhone SE上发生 only

所以到目前为止我已经得到了以下代码,它可以在iOS 11中正常运行:

List<ACHTransaction> transactions =
    transactionDao.retrieveTransactions(getJobParameters()).stream()
        .filter(t -> t.getFileHash() == null)
        .collect(Collectors.toList());

我已经尝试了几件事情将这个用于if if case并且我已经搜索了如何仅针对设备类型定义事物但是作为初学者(第6周学习......)我&#39到目前为止完全失败了。

1 个答案:

答案 0 :(得分:-1)

@rmaddy给了我正确的提示后,我自己给出了答案。我所做的就是添加一个if情况,用view.bounds.height检查视图大小(对于iPhone 5来说是568pt)。

所以上面的代码改为:

override func viewDidLoad() {
    super.viewDidLoad()

let screenHeight = view!.bounds.height
//Checking the view size in pt here

if screenHeight <= 568 {
//add this to perform only for devices with view size 568 or lower
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
}

@objc func keyboardWillHide() {
    self.view.frame.origin.y = 0
}

@objc func keyboardWillChange(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
        if myTextField.isFirstResponder {
            self.view.frame.origin.y = -keyboardSize.height
        }
    }
}