4

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

这就是我试图在代码中实现这一点的方式

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

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

4

5 回答 5

3

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

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

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

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

这有意义吗?

于 2013-11-14T03:45:44.960 回答
1

它对我来说很好,在 textFieldShouldReturn 委托方法中,您可以使用委托方法中指定的 textField 对象与您要辞职的 textField 的标签。您也可以使用您要辞职的 textField 的对象([cutField辞职第一响应者])。

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

如果您不使用 IB,则必须以编程方式为每个文本字段设置标签。

于 2013-11-14T03:45:14.697 回答
1

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

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

 // now set to first responder
  [yourTextField becomeFirstResponder];
于 2013-11-14T07:03:55.883 回答
1

用这个:

[(UITextField*)self.cutField viewWithTag:0] becomeFirstResponder]
于 2015-10-13T13:52:13.293 回答
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];
}
于 2013-11-14T04:54:58.753 回答