2011-04-22 77 views
1

我知道這個主題已經有很多了。我從另一個問題得到了下面的代碼,但我不知道如何設置它來使用。有人可以詳細一步一步詳細地介紹如何在鍵盤彈出後在鍵盤上移動文本框的過程,然後在編輯完成後將其移回。設置Textfield動畫來移動鍵盤上方的TextField

- (void)textFieldDidBeginEditing:(UITextField *)textField 
    { 
     [self animateTextField: textField up: YES]; 
    } 


    - (void)textFieldDidEndEditing:(UITextField *)textField 
    { 
     [self animateTextField: textField up: NO]; 
    } 

    - (void) animateTextField: (UITextField*) textField up: (BOOL) up 
    { 
     const int movementDistance = 80; // tweak as needed 
     const float movementDuration = 0.3f; // tweak as needed 

     int movement = (up ? -movementDistance : movementDistance); 

     [UIView beginAnimations: @"anim" context: nil]; 
     [UIView setAnimationBeginsFromCurrentState: YES]; 
     [UIView setAnimationDuration: movementDuration]; 
     self.view.frame = CGRectOffset(self.view.frame, 0, movement); 
     [UIView commitAnimations]; 
    } 

回答

1

是對textFieldDidBeginEditing:textFieldDidEndEditing:曾經被調用?

如果不是,您可能無法正確設置文本字段的委託。

當你(如果你使用IB,在viewDidLoad中或)宣佈你的文本字段,補充一點: yourTextField.delegate = self;

+0

@Joe這讓我進入textFieldDidBeginEditing但隨後的代碼崩潰與「NSInvalidArgumentException」的,理由是:「 - [UIView的scrollToView:]:無法識別的選擇發送到實例0x4e47840」 – 2011-04-22 18:44:36

+0

的代碼示例中有沒有'scrollToView'你帖子。你可以做一個搜索,看看你在代碼中調用了那個方法嗎? – 2011-04-22 18:50:35

+0

@Joe明白了,忘了將UITextFiledDelegate添加到.h文件 – 2011-04-22 22:08:18

0

我會強烈建議使用一個UITableViewController,把你的UITextField到表中。這樣鍵盤隱藏問題就可以由系統解決。