键盘打开时iPhone向上滚动视图
Posted
技术标签:
【中文标题】键盘打开时iPhone向上滚动视图【英文标题】:iPhone scrolling the view up when keyboard is open 【发布时间】:2010-05-11 18:06:05 【问题描述】:我知道这个问题非常普遍,我已经阅读了很多答案,但无法理解代码的工作原理。这有效:
-(void)textFieldDidBeginEditing:(UITextField *)sender
if ([sender isEqual:txtLeaveAddyLine1])
//move the main view, so that the keyboard does not hide it.
if (self.view.frame.origin.y >= 0)
[self setViewMovedUp:YES];
在这个例子中,txtLeaveAddy 是第一个被键盘隐藏的 UITextField,它的作用就像一个魅力。当我循环浏览屏幕上的文本字段时,当用户进入该 txtLeaveAddyLine1 字段时,它会向上滚动。但是,当我尝试在 txtLeaveAddyLine1 字段下方添加字段时 - 没有任何反应。例如:
-(void)textFieldDidBeginEditing:(UITextField *)sender
if ([sender isEqual:txtLeaveAddyLine1])
//move the main view, so that the keyboard does not hide it.
if (self.view.frame.origin.y >= 0)
[self setViewMovedUp:YES];
if ([sender isEqual:txtLeaveAddyLine2])
//move the main view, so that the keyboard does not hide it.
if (self.view.frame.origin.y >= 0)
[self setViewMovedUp:YES];
我没有正确使用这个功能吗?
【问题讨论】:
【参考方案1】:执行此操作的常用方法是将文本字段放在表格视图中。当文本字段开始编辑时,获取其所在单元格的索引路径并调用:
[tableView scrollToRowAtIndexPath:indexPath
atScrollPosition:UITableViewScrollPositionMiddle
animated:YES];
【讨论】:
如何在表格视图中设置 UITextFields 和 Labels?每次我尝试在表格视图上放置一个文本字段或标签时,这真的很困难——它不想让我把它放在某些地方。 创建一个带有标签和文本字段的自定义 UITableViewCell。然后使用该单元格填充表格。【参考方案2】:http://www.iphonesampleapps.com/2009/12/adjust-uitextfield-hidden-behind-keyboard-with-uiscrollview/
【讨论】:
【参考方案3】:setViewMovedUp 不是内置的 - 我认为它的代码来自 Apple 示例。 (如果您的版本与我发现的版本不同,则以下可能不适用...)
它不会神奇地移动到正确的位置,它只是将视图移动一个固定的量。我想您需要查看该函数并确定视图需要为每个字段移动多远,然后修改视图以根据字段位置更改视图的移动量。要么用 select case 语句硬连线一些简单的东西,要么传入发送者并查看它的框架以找出将视图移动到的位置。
【讨论】:
请参阅下面的 Rob 自己的答案 - 似乎完美地涵盖了它。以上是关于键盘打开时iPhone向上滚动视图的主要内容,如果未能解决你的问题,请参考以下文章