Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用apple键盘中的返回按钮进行导航_Ios_Objective C_Xcode_Xcode6 - Fatal编程技术网

Ios 使用apple键盘中的返回按钮进行导航

Ios 使用apple键盘中的返回按钮进行导航,ios,objective-c,xcode,xcode6,Ios,Objective C,Xcode,Xcode6,我的视图控制器中有多个文本字段。如何使用IOS键盘上的返回按钮从一个文本字段导航到另一个文本字段 使用UITextFieldDelegate委托,并且textfield应返回:方法。在内部,您可以获得传入参数的textfield标记,并根据此信息指向另一个标记 -(BOOL) textFieldShouldReturn: (UITextField *) textField { [textField resignFirstResponder]; if(textField ==

我的视图控制器中有多个文本字段。如何使用IOS键盘上的返回按钮从一个文本字段导航到另一个文本字段

使用
UITextFieldDelegate
委托,并且
textfield应返回:
方法。在内部,您可以获得传入参数的
textfield
标记,并根据此信息指向另一个标记

-(BOOL) textFieldShouldReturn: (UITextField *) textField 
  {
   [textField resignFirstResponder];
    if(textField == _your1stTextField)
       [_your2ndTextField becomeFirstResponder];
    return YES;
  }
要使代理工作,您必须将发送方的委托属性(textfield)设置为接收方(例如,您的视图控制器)

或者在故事板中执行()。然后,视图控制器需要按如下方式指定此委托(在“h”文件中):

试试这个

将委托设置为所有文本字段,然后

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

我认为这个解决方案更具动态性,因为它适用于任意数量的文本字段,只要superview没有标记==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;
}

你需要在.h申报

.m集

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


希望它能帮助你

您可以使用标记this@BHASKAR你能告诉我怎么做吗?因为我是ios新手。请告诉我这个链接是如何解决上一个按钮下一个按钮的问题。我正在我的视图控制器中编写这个方法。什么都没有改变。你是否在文本字段上设置了
委托
,以指向你的视图控制器?如果你想从中导航,请再问一个问题将文本字段转换为按钮如何操作?我还没有尝试过,但我想与
UIResponder
类的
becomeFirstResponder
的方法一样,
UIButton
也可以使用。如果我想使用键盘上的返回按钮将文本字段转换为按钮,你知道吗,UIButton继承自UIResponder。还没有尝试过,但如果最后一个标记的视图是UIButton,它肯定会工作。
- (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;
}
-(BOOL) textFieldShouldReturn:(UITextField *)textField
{
    NSInteger nextTag = textField.tag + 1;
    UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];

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

    return NO;
}
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;
    }