2014-09-02 29 views
1

我在我的視圖控制器中有多個文本字段我如何使用IOS鍵盤中的返回按鈕從一個導航到另一個。使用蘋果鍵盤上的返回按鈕導航

+0

您可以使用標籤這個 – BHASKAR 2014-09-02 07:06:47

+0

@BHASKAR u能告訴我怎樣,因爲我是新iOS中請 – mowi 2014-09-02 07:09:06

+1

這裏顯示這個鏈接是下一個上一個按鈕的解決方案 http://stackoverflow.com/questions/5591792 /如何獲取鍵盤上的下一個上一步完成按鈕 – BHASKAR 2014-09-02 07:10:13

回答

1

使用UITextFieldDelegate代表和textFieldShouldReturn:方法。在裏面你可以獲得textfield的標籤,並根據這些信息直接傳遞給另一個。

要使委託的工作,你必須設置發件人(文本框)的委託財產是接收器(例如,您的視圖控制器)

myTextField.delegate = self; 

或做它在故事板(here is some storyboard hints)。您的視圖控制器則需要如下指定該委託(在 「H」 文件):

@interface MyViewController:UIViewController<UITextFieldDelegate> 
@end 

,然後在 「M」 文件

-(BOOL)textFieldShouldReturn:(UITextField*)textfield{ 
    if([textfield tag] == 1) 
    { 
     //pass focus to next textfield 
     [self.nextTextField becomeFirstResponder]; 
    } else { 
     //remove focus from current textfield 
     [textfield resignFirstResponder];// 
    } 
    return YES;//YES if textfield should implement its default behaviour 
} 
+0

我正在寫這個方法在我的視圖控制器中沒有任何變化 – mowi 2014-09-02 07:16:34

+0

您是否在文本字段上設置了「委託」以指向您的視圖控制器? – 2014-09-02 07:18:02

+0

不,我該怎麼做? – mowi 2014-09-02 07:19:01

0
-(BOOL) textFieldShouldReturn: (UITextField *) textField 
    { 
    [textField resignFirstResponder]; 
    if(textField == _your1stTextField) 
     [_your2ndTextField becomeFirstResponder]; 
    return YES; 
    } 
0

試試這個...

集代表所有的文本字段,然後..

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
    { 
     if (textField == textField1) 
     { 
     [textField2 becomeFirstResponder]; 
     } 
     else if (textField == textField2) 
     { 
     [textField3 becomeFirstResponder]; 
     } 
     else if textField == textField3) 
     { 
     [textField4 becomeFirstResponder]; 
     }  
     . 
     . 
     . 

     [textField resignFirstResponder]; 

     return YES; 
    } 
0

我認爲這個解決方案是更加動態的,因爲它適用於任何麻木文本框的呃,只要你的上海華沒有帶標籤的附圖== lastTextField.tag + 1

在viewDidLoad中:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.textField1.delegate = self; 
    self.textField2.delegate = self; 
    ... 
    self.lastTextField.delegate = self; 

    self.textField1.tag = 1; 
    self.textField2.tag = 2; 
    ... 
    self.lastTextField.tag = n; 
} 

然後實現textFieldDelegate:

-(BOOL) textFieldShouldReturn:(UITextField *)textField 
{ 
    NSInteger nextTag = textField.tag + 1; 
    UIResponder* nextResponder = [textField.superview viewWithTag:nextTag]; 

    if (nextResponder) 
     [nextResponder becomeFirstResponder]; 
    else 
     [textField resignFirstResponder]; 

    return NO; 
} 
+0

任何想法,如果我想通過鍵盤上的返回按鈕從文本字段傳遞到按鈕? – mowi 2014-09-02 07:41:58

+0

如下所示:https://developer.apple.com/library/ios/documentation/uikit/reference/UIButton_Class/UIButton/UIButton.html,UIButton從UIResponder繼承。還沒有嘗試過,但如果你最後一次標記的視圖是UIButton,它肯定會工作。 – grimdox 2014-09-02 08:24:50

0

你需要在.H

.M申報設置

yourTextfieldRef1.delegate=self; 
yourTextfieldRef2.delegate=self; 
yourTextfieldRef3.delegate=self; 
yourTextfieldRef4.delegate=self; 
yourTextfieldRef5.delegate=self; 
. 
. 
. 

設置

yourTextFieldRef1.tag=1; 
yourTextFieldRef2.tag=2; 
yourTextFieldRef3.tag=3; 
yourTextFieldRef4.tag=4; 
yourTextFieldRef5.tag=5; 
. 
. 
. 


-(BOOL)textFieldShouldReturn:(UITextField*)textField; 
    { 
     NSInteger nextTag = textField.tag + 1; 
     // Try to find next responder 
     UIResponder* nextResponder = [textField.superview viewWithTag:nextTag]; 
     if (nextResponder) { 
      // Found next responder, so set it. 
      [nextResponder becomeFirstResponder]; 
     } else { 
      // Not found, so remove keyboard. 
      [textField resignFirstResponder]; 
     } 
     return YES; 
    } 

希望它可以幫助你......!