出现键盘时移动文本字段会覆盖(Swift)中的顶部文本字段
Posted
技术标签:
【中文标题】出现键盘时移动文本字段会覆盖(Swift)中的顶部文本字段【英文标题】:Moving textfield when keyboard appears is covering up top textfields in (Swift) 【发布时间】:2015-05-01 13:18:52 【问题描述】:我第一次遇到屏幕底部的文本字段问题,因为键盘会覆盖它们。现在我解决了这个问题,我有了一个新问题。当我尝试在屏幕顶部的文本字段中输入文本时,屏幕会升起并且不让我看到我正在输入的内容。
我认为我最理想的做法是改变键盘向上推动屏幕的程度。下面是我用于初始更改的代码。
我两周前刚开始学习开发,所以我仍然熟悉所有语法和功能。
var kbHeight: CGFloat!
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
override func viewWillAppear(animated:Bool)
super.viewWillAppear(animated)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)
override func viewWillDisappear(animated: Bool)
super.viewWillDisappear(animated)
NSNotificationCenter.defaultCenter().removeObserver(self)
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)
func animateTextField(up: Bool)
var movement = (up ? -kbHeight : kbHeight)
UIView.animateWithDuration(0.3, animations:
self.view.frame = CGRectOffset(self.view.frame, 0, movement)
)
【问题讨论】:
您发布的代码有问题吗?它与您的预期结果有何不同? 这不是正确的方法,您正在移动一个固定的 kbHeight。请阅读Managing the Keyboard。同样在您当前的上下文中,您还应该考虑所选文本字段的y
位置
代码可以正常工作,但如果屏幕上半部分有一个文本字段,它将向上移动到我看不到我正在输入的内容的位置。
这就是为什么我说你应该考虑y
所选文本字段的位置,如果它在上半部分,不要移动,否则移动。但这仍然不是正确的方法。请以正确的方式浏览我之前发布的链接。
感谢您的帮助!我现在正在读它:)
【参考方案1】:
这是一个建议
而不是设置 View 的框架。将视图放在 UIScrollView 中。 然后在您的 keyboardWillShow 和 keyboardWillHide 方法中相应地调整滚动视图框架。
并使用 textfield 委托方法中的“scrollRectToVisible”设置滚动视图的内容偏移量。
- (void) textFieldDidBeginEditing:(UITextField *)textField
CGRect rectText = textField.frame;
self.scrollVIew scrollRectToVisible:rectText animated:TRUE];
【讨论】:
以上是关于出现键盘时移动文本字段会覆盖(Swift)中的顶部文本字段的主要内容,如果未能解决你的问题,请参考以下文章