【发布时间】:2015-10-17 06:34:19
【问题描述】:
我有一个登录页面,对于较小的屏幕(例如 iPhone 4s),键盘可以覆盖登录按钮和密码文本字段等。所以我将用户名文本字段、密码文本字段和登录按钮放入连接到 ViewController 的 UIView作为 loginView,我想检测键盘是否在 loginView 上,它会推送 loginView 而不是覆盖它,当键盘完全打开时推送将停止,所以 loginView 将站在键盘上。并且当键盘关闭时,它会拉 loginView 直到它到达它的第一个位置。
我试过了,但我会推送所有视图
var kbHeight: CGFloat!
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil);
func animateTextField(up: Bool) {
var movement = (up ? -kbHeight : kbHeight)
UIView.animateWithDuration(0.3, animations: {
self.view.frame = CGRectOffset(self.view.frame, 0, movement)
})
}
func keyboardWillShow(notification: NSNotification) {
if let userInfo = notification.userInfo {
if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
kbHeight = keyboardSize.height
self.animateTextField(true)
}
}
}
func keyboardWillHide(notification: NSNotification) {
self.animateTextField(false)
}
这是我在许多网站上找到的样本,人们和我有同样的问题正在使用它。我用self.loginView.frame = CGRectOffset(self.view.frame, 0, movement)
更改了这个self.view.frame = CGRectOffset(self.view.frame, 0, movement)
行,因为我想推送我的loginView 视图,它里面有文本字段和按钮,但它仍然不起作用并且覆盖登录按钮,所以不能正确推送。如果有人能解释我如何做或向我展示解释它的来源,我会很高兴,我搜索但找不到,也许我错过了。
这是我的用户界面 http://i62.tinypic.com/1bssy.png
感谢您的建议
【问题讨论】:
-
你可以使用 TPkeyboard 避免滚动视图。
标签: ios swift uiview keyboard move