如何在不同父视图中的文本字段之间切换焦点(becomeFirstResponder)

时间:2014-08-19 23:13:59

标签: ios uitextfield becomefirstresponder

我有3个自定义对象,每个对象包含3个uitextfields。

当我在键盘中按下一步时,我可以通过textFieldShouldReturn和becomeFirstResponder将焦点传递给下一个UITextFiled。当它们位于同一父视图中时,这很好。但是如何将焦点传递给不同父视图中的UITextFiled?

Rows are different Views

每行代表不同的视图。所以我的问题是将焦点从text3传递到text4。

1 个答案:

答案 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
}