2010-05-11 120 views
0

我明白这个问题非常常见,而且我已经阅读了很多答案,但无法理解代码是如何工作的。这工作:iPhone在键盘打开时向上滚动视图

-(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]; 
     } 
    } 
} 

我没有正确使用此功能?

回答

0

setViewMovedUp不是内置的 - 我认为苹果示例中的代码。 (如果您的版本与我发现的版本不同,以下内容可能不适用...)

它不会奇迹般地移动到正确的位置,它只会将视图移动一个固定的量。我想你需要看看这个函数,并计算出需要移动每个域的视图的距离,然后修改视图以根据域的位置来改变视图的移动量。无论是通过选择案例语句将简单的东西硬连接起来,还是传入发件人并查看其框架以确定将视图移到哪里。

+0

见下文剥夺自己的答案 - 似乎完美地覆盖它。 – Andiih 2010-05-12 08:40:21

2

执行此操作的常见方法是在表格视图中显示文本字段。当文本字段开始编辑,获得该指数路径细胞是在和拨打:

[tableView scrollToRowAtIndexPath:indexPath 
       atScrollPosition:UITableViewScrollPositionMiddle 
         animated:YES]; 
+0

如何在表格视图中设置UITextFields和标签?每次我尝试在文字视图上放置文本字段或标签时,都非常困难 - 它不希望允许我将它放在特定位置。 – startuprob 2010-05-11 22:52:58

+0

使用标签和文本字段创建自定义UITableViewCell。然后使用该单元格填充表格。 – 2010-05-12 21:21:44

相关问题