我有几个 UITextfields,我试图将第一个响应者设置为第一个 UITextField,它的标签应该等于 0。
这就是我试图在代码中实现这一点的方式
[[self.cutField viewWithTag:0] becomeFirstResponder];
但问题是这个 UITextField 永远不会成为第一响应者。
我有几个 UITextfields,我试图将第一个响应者设置为第一个 UITextField,它的标签应该等于 0。
这就是我试图在代码中实现这一点的方式
[[self.cutField viewWithTag:0] becomeFirstResponder];
但问题是这个 UITextField 永远不会成为第一响应者。
[self.cutField becomeFirstResponder] 应该可以工作
您不需要子视图,因为文本字段是 UIView。
您可以使用它的父视图,例如在控制器类中,
-(void) viewDidLoad {
[[self.view viewWithTag:0] becomeFirstResponder];
}
这有意义吗?
它对我来说很好,在 textFieldShouldReturn 委托方法中,您可以使用委托方法中指定的 textField 对象与您要辞职的 textField 的标签。您也可以使用您要辞职的 textField 的对象([cutField辞职第一响应者])。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[[textField viewWithTag:0] resignFirstResponder];
return YES;
}
如果您不使用 IB,则必须以编程方式为每个文本字段设置标签。
-viewWithTag: 方法返回 UIView 对象,因此您需要显式转换其类型:
UITextField *yourTextField = (UITextField *)
[self.view viewWithTag:0];
// now set to first responder
[yourTextField becomeFirstResponder];
用这个:
[(UITextField*)self.cutField viewWithTag:0] becomeFirstResponder]
@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];
}