我有多个从键盘获取输入的自定义类实例。你可以想到UITextField
(但它们不是UITextField
,它们是NSObject
)。但是,它们都有一个属性 UIControl *control
。
这些对象被实例化并放入一个数组中(顺序很重要),并且它们以相同的顺序放在屏幕上。
场景 1: 用户点击第一个对象,它成为第一响应者。用户点击另一个对象(来自同一类),它成为第一响应者。没问题。
场景 2: 用户点击第一个对象,它成为第一响应者。用户点击键盘(iPad 或 iPhone 或无线键盘)的 TAB
按钮,我希望数组中的下一个对象成为下一个响应者。 iOS 随机选择 [?或者一些我不清楚的逻辑]另一个与我想要的顺序不同的对象。
问题:因为这些对象是NSObject
,我怎样才能拦截到下一个对象的转换。我尝试使用标签或跟踪谁是第一响应者,但问题是,如果用户不按顺序点击某个对象,那也没关系——我不想拦截它。我只想拦截从一个对象到另一个对象的转换仅当是通过点击TAB
(或Next
或Return
) 键盘按钮。
有什么想法吗?谢谢。
最佳答案
你可以将你的自定义类设置成这样
@interface testClassButtonSub : UIButton
@property (weak,nonatomic) IBOutlet UIButton *nextButton;
@end
然后您甚至可以使用界面构建器来设置执行特定操作时的下一个响应者。 (用户在自定义类的文本字段内按下回车键)
对于返回,您必须将 View Controller 声明为特定 TextView 的委托(delegate)。
首先你像这样设置viewcontroller header:
@interface RegisterViewController : UIViewController <UITextFieldDelegate>
然后在实现中设置委托(delegate)
// Set Delegates of the Text Fields
eMail.delegate = self;
userPassword.delegate = self;
userNickname.delegate = self;
然后你使用这个委托(delegate)方法跳转到下一个对象
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
// Jumping code here
return NO;
}
但是 在您的情况下,您的文本字段必须在您的对象内,因此您必须使该对象成为委托(delegate),并在该对象的实现跳转代码中添加
[thisObjectsTextfield becomeFirstResponder];
关于iphone - 识别按下选项卡按钮以移动到下一个响应者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13485066/