我有3个自定义对象,每个对象包含3个uitextfields。
当我在键盘中按下一步时,我可以通过textFieldShouldReturn和becomeFirstResponder将焦点传递给下一个UITextFiled。当它们位于同一父视图中时,这很好。但是如何将焦点传递给不同父视图中的UITextFiled?
每行代表不同的视图。所以我的问题是将焦点从text3传递到text4。
答案 0 :(得分:0)
您希望在" text4"上使用becomeFirstResponder
。因此,根据您如何进行所有设置(我假设他们只是IBOutlets
),您会想要按照以下方式执行某些操作:
- (IBAction) userHitReturnOnTextField:(UITextField *)sender {
if (sender == self.text1) [self.text2 becomeFirstResponder];
else if (sender == self.text2) [self.text3 becomeFirstResponder];
...
else [self.view endEditing:YES]; // hides the keyboard
}
当然,您可以获得更多创意并将UITextFields
存储在数组中,并且您的逻辑将变得更简单,具体取决于您拥有的文本字段数量:
- (IBAction) userHitReturnOnTextField:(UITextField *)sender {
int nextIndex = [self.myArrayOfTextFields indexOfObject:sender] + 1;
if (nextIndex < self.myArrayOfTextFields.count) {
UITextField *nextField = self.myArrayOfTextFields[nextIndex];
[nextField becomeFirstResponder];
} else [self.view endEditing:YES]; // hides the keyboard
}