【发布时间】:2015-08-18 04:04:53
【问题描述】:
下面是我尝试使用的代码,仅当键盘隐藏焦点文本字段或 UIButton 时,视图才会滚动:
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var buttonToBottomConstraint: NSLayoutConstraint!
@IBOutlet weak var textFieldUsername: UITextField!
@IBOutlet weak var textFieldPassword: UITextField!
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector:"keyboardWillBeHidden:", name: UIKeyboardWillHideNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector:"keyboardWillBeShown:", name: UIKeyboardWillShowNotification, object: nil)
}
func textFieldDidBeginEditing(textField: UITextField) {
}
func textFieldShouldReturn(textField: UITextField) -> Bool {textField.resignFirstResponder()
return true
}
func keyboardWillBeHidden(notification: NSNotification){
self.scrollView.setContentOffset(CGPointMake(0, 0), animated: true)
}
func keyboardWillBeShown(notification: NSNotification){
let userInfo = notification.userInfo!
if let kbsize = userInfo[UIKeyboardFrameBeginUserInfoKey]?.CGRectValue().size{
self.scrollView .setContentOffset(CGPointMake(0, kbsize.or), animated: true)
}
}
}
问题:即使键盘没有隐藏任何内容,视图也会滚动。
在发布时查看:
点击文本字段时查看:
问题:我如何检查焦点区域是否被键盘隐藏,如果是,则将其推到它上方?
编辑
应用在纵向模式下运行良好,但在横向模式下却不行。同样在横向模式下,当用户名文本字段键盘打开并点击密码文本字段时,它仍然隐藏在键盘后面。我在 Github 上更新了项目并修复了链接。谢谢
横向屏幕截图:
【问题讨论】:
标签: swift ios8 scrollview uikeyboard