如何使用其标记字段使UITextField成为第一响应者

时间:2013-11-14 03:04:47

标签: ios objective-c tags uitextfield first-responder

我有几个UITextfields,我试图将第一个响应者设置为第一个UITextField,它的标签应该等于0。

这就是我试图在代码中实现此目的

[[self.cutField viewWithTag:0] becomeFirstResponder];

但问题是这个UITextField永远不会成为第一个响应者......

如果有人能帮我解决这个问题,我将不胜感激。

5 个答案:

答案 0 :(得分:2)

[self.cutField becomeFirstResponder]应该可以正常工作

您不需要子视图,因为文本字段是UIView。

您可以使用它的父视图,例如在控制器类中,

-(void) viewDidLoad {
 [[self.view viewWithTag:0]  becomeFirstResponder];
}

这有意义吗?

答案 1 :(得分:1)

它对我来说很好,在textFieldShouldReturn委托方法中,你可以使用委托方法中指定的textField对象和你想要辞职的textField的标记。你也可以使用你要辞职的textField的对象([cutField resignFirstResponder])。

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [[textField viewWithTag:0] resignFirstResponder];
    return YES;
}

如果您不使用IB,则必须以编程方式为每个textField设置标记。

答案 2 :(得分:1)

-viewWithTag:方法返回UIView对象,因此您需要显式转换它的类型:

    UITextField *yourTextField = (UITextField *)
    [self.view viewWithTag:0];

 // now set to first responder
  [yourTextField becomeFirstResponder];

答案 3 :(得分:1)

使用它:

[(UITextField*)self.cutField viewWithTag:0] becomeFirstResponder]

答案 4 :(得分:0)

@interface TextInputVC ()

@property (nonatomic, strong) UITextField    *inputTextView;

@end

- (void)viewDidLoad {
    self.inputTextView                   = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 300, 100)];
    self.inputTextView.backgroundColor   = [UIColor clearColor];
    self.inputTextView.delegate          = self;
    self.inputTextView.tag               = 1000;
    self.inputTextView.text              = self.fieldTextValue;
    [self.view addSubview:self.inputTextView];

    // [inputTextView becomeFirstResponder];
    [self showKeyboard];
}

-(void) showKeyboard {
    UITextField *textfield  = (UITextField *)[self viewWithTag:1000];
    [textfield becomeFirstResponder];
}