0

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

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

行是不同的视图

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

4

1 回答 1

0

您将要becomeFirstResponder在“text4”上使用。因此,根据您如何进行所有设置(我假设它们只是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
}
于 2014-08-19T23:39:13.313 回答