帮助我UITextField

时间:2010-11-01 12:54:14

标签: iphone iphone-sdk-3.0

我有UITextFields列表。

我想在输入输入后逐个移动到下一个文本字段。

因为键盘隐藏了字段......

你们有人告诉我,我怎么能做到这一点......

非常感谢您的时间。

2 个答案:

答案 0 :(得分:2)

  • (无效)shiftViewUp:(BOOL)向上 {

[UIView beginAnimations:nil context:NULL];

[UIView setAnimationDuration:0.3];

CGRect rect = self.view.frame;
if (movedUp)
{

    if(rect.origin.y == 0){
        rect.origin.y -= 85.0;
        rect.size.height += 85.0;
    }
}
else
{

    if(rect.origin.y != 0.0){
        rect.origin.y += 85.0;
        rect.size.height -= 85.0;
    }
}

self.view.frame = rect;

[UIView commitAnimations];

}

基本上,当您开始编辑textfiled&时,可以使用BOOL YES调用此方法。当您结束编辑时,使用BOOL no。 您只需要根据您可以调整的移位来跟踪正在编辑的文本字段(例如,此处为85)

答案 1 :(得分:1)

另一种方法可能是使用UITableView。然后大多数控件都准备好了。但你也可以自己完成这一切。

首先将您的UITextfields放在单独的UIView上。让UIView成为一个出口,正确地链接它。这样,您可以使用动画轻松移动文本字段。

然后在委托方法中执行类似的操作:

//  Sets the label of the keyboard's return key to 'Done' when the insertion
//  point moves to the table view's last field.
//
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
 {
     if ([textField tag] == myLastUITextField)
 {
    [textField setReturnKeyType:UIReturnKeyDone];
 }  
   return YES;
 }

- (BOOL)textFieldShouldReturn:(UITextField *)textField
 {
   if ([textField returnKeyType] != UIReturnKeyDone)
 {
    //  If this is not the last field (in which case the keyboard's
    //  return key label will currently be 'Next' rather than 'Done'), 
    //  just move the insertion point to the next field.
    //
    NSInteger nextTag = [textField tag] + 1;

    UIView *nextTextField = [myTextView viewWithTag:nextTag];

    // here starts your animation code
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3]; 
    CGRect rect = textFieldView.frame;
    rect.origin.y = -44;
    textFieldView.frame = rect;
    [UIView commitAnimations];        
    // here ends your animation code. Play with it
    [nextTextField becomeFirstResponder];
  }
else 
{
    //  do what you want to do with the last UITextfield  
}
    return YES;
}

`

我认为它不会立即通过复制粘贴工作,但我希望它指向一个方向。祝你好运