我有 3 个自定义对象,每个对象包含 3 个 uitextfields。
当我在键盘上按下一个时,我可以通过 textFieldShouldReturn 和 becomeFirstResponder 将焦点传递给下一个 UITextFiled。当它们位于同一个父视图中时,这很好。但是如何将焦点传递给不同父视图中的 UITextFiled?
每行代表一个不同的视图。所以我的问题是将焦点从 text3 传递到 text4。
我有 3 个自定义对象,每个对象包含 3 个 uitextfields。
当我在键盘上按下一个时,我可以通过 textFieldShouldReturn 和 becomeFirstResponder 将焦点传递给下一个 UITextFiled。当它们位于同一个父视图中时,这很好。但是如何将焦点传递给不同父视图中的 UITextFiled?
每行代表一个不同的视图。所以我的问题是将焦点从 text3 传递到 text4。
您将要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
}