我正在尝试为iPhone构建输入屏幕.屏幕有许多输入字段.其中大多数位于屏幕顶部,但两个字段位于底部.当用户尝试编辑屏幕底部的文本时,键盘将弹出并覆盖屏幕.我找到了一个简单的解决方案,可以在发生这种情况时将屏幕向上移动,但结果是屏幕总是向上移动,当用户尝试编辑屏幕时,屏幕顶部的字段会移动.
有没有办法让屏幕只在编辑底部字段时移动?
我使用了这里找到的代码:
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)
}
func keyboardWillShow(sender: NSNotification) {
self.view.frame.origin.y -= 150
}
func keyboardWillHide(sender: NSNotification) {
self.view.frame.origin.y += 150
}
Run Code Online (Sandbox Code Playgroud) 对于常数UIKeyboardFrameEndUserInfoKey,在Apple文档中它说:
这些坐标不考虑由于界面方向改变而应用于窗口内容的任何旋转因子.因此,您可能需要在使用之前将矩形转换为窗口坐标(使用convertRect:fromWindow:方法)或查看坐标(使用convertRect:fromView:方法).
所以,如果我使用 [view1 convertRect:rect fromView:view2]
我将为上述参数插入什么以使其正确转换旋转值?即:
view1 =?rect =?(我假设键盘架)view2 =?
一直在尝试一些事情并得到一些有趣的东西.