Ios 如何使用UITextField的标记字段使其成为第一响应者
我有几个UITextfields,我正在尝试将第一个响应程序设置为其标记应等于0的第一个UITextField 这就是我试图在代码中实现这一点的方式Ios 如何使用UITextField的标记字段使其成为第一响应者,ios,objective-c,tags,uitextfield,first-responder,Ios,Objective C,Tags,Uitextfield,First Responder,我有几个UITextfields,我正在尝试将第一个响应程序设置为其标记应等于0的第一个UITextField 这就是我试图在代码中实现这一点的方式 [[self.cutField viewWithTag:0] becomeFirstResponder]; 但问题是,这个UITextField永远不会成为第一响应者。对我来说,它工作得很好,在textFieldShouldReturn委托方法中,您可以使用委托方法中指定的textField对象以及您想要辞职的textField标记。您还可以使用
[[self.cutField viewWithTag:0] becomeFirstResponder];
但问题是,这个UITextField永远不会成为第一响应者。对我来说,它工作得很好,在textFieldShouldReturn委托方法中,您可以使用委托方法中指定的textField对象以及您想要辞职的textField标记。您还可以使用您想要辞职的textField的对象([cutField辞职FirstResponder])
如果您不使用IB,您必须以编程方式为每个文本字段设置标记。[self.cutField becomeFirstResponder]应该可以工作 您不需要子视图,因为textfield是UIView 您可以使用它的父视图,例如在控制器类中
-(void) viewDidLoad {
[[self.view viewWithTag:0] becomeFirstResponder];
}
这有意义吗?-viewWithTag:method返回UIView对象,因此需要显式转换其类型:
@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];
}
UITextField *yourTextField = (UITextField *)
[self.view viewWithTag:0];
// now set to first responder
[yourTextField becomeFirstResponder];
使用以下命令:
[(UITextField*)self.cutField viewWithTag:0] becomeFirstResponder]
你可以尝试使用大于0的标记吗?我刚刚尝试使用1和2,但它不起作用。很明显,只要我触摸文本字段,所有内容都正常工作。但是是的。文本字段是
self的子视图。cutField
?0是任何视图的默认标记。只需打印[self.cutField viewWithTag:0]
,可能此视图不是您的文本字段。您是否调用了委托方法?如果不是,则调用self.cutField.delegate=self;此代码有效,因为viewWithTag:
从接收者开始搜索。所有视图的默认标记均为0。因此调用[someView viewWithTag:0]只要someView
没有其他特定的标记,就会返回someView`。这是毫无意义的。但是为什么要在这里调用viewWithTag:
?为什么不直接调用[textField resignFirstResponder]文本域不会有任何文本域子视图。不。调用辞职FirstResponder
只会辞职你调用它的文本域。此外,无论如何,只有一个文本域可以是第一个响应者。你在回答中发布的代码中不需要使用标记。嘿,maddy,我知道,这是我在上面的评论。但是我回答了他想使用标记的问题。当方法被称为textField时使用此代码在我记录它时返回为null。将UITextView更改为UITextField@hussainShabbir:thks更改为UItextField
[(UITextField*)self.cutField viewWithTag:0] becomeFirstResponder]