我有几个UITextfields,我试图将第一个响应者设置为第一个UITextField,它的标签应该等于0。
这就是我试图在代码中实现此目的
[[self.cutField viewWithTag:0] becomeFirstResponder];
但问题是这个UITextField永远不会成为第一个响应者......
如果有人能帮我解决这个问题,我将不胜感激。
答案 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];
}