识别按下的标签按钮以移动到下一个响应者

时间:2012-11-21 01:33:40

标签: iphone ios ipad uicontrol uiresponder

我有一个自定义类的多个实例,它从键盘获取输入。您可以考虑UITextField(但它们不是UITextField,而是NSObject)。但是,它们都有一个属性UIControl *control

这些对象被实例化并放入一个数组(订单很重要),它们以相同的顺序放在屏幕上。

场景1:第一个对象上的用户标签,它成为第一个响应者。用户点击另一个对象(来自同一个类)并成为第一个响应者。没问题。

场景2:第一个对象上的用户标签,它成为第一个响应者。用户点击键盘的TAB按钮(iPad或iPhone或无线键盘),我希望阵列中的下一个对象成为下一个响应者。 iOS随机选择[?或者我不清楚的一些逻辑]另一个与我想要的顺序不同的对象。

问题:因为这些对象是NSObject,所以如何拦截到下一个对象的过渡。我尝试使用标签或跟踪谁是第一个响应者,但问题是,如果用户按顺序点击一个对象,它很好 - 我不想拦截它。我只想通过点击键盘上的TAB(或NextReturn)按钮拦截从一个对象转换为另一个 的转换。 p>

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

您可以将自定义类设置为具有此类

@interface testClassButtonSub : UIButton

@property (weak,nonatomic) IBOutlet UIButton *nextButton;

@end

然后,您甚至可以使用界面构建器来设置在执行特定操作时哪个将成为下一个响应者。 (用户在自定义类的文本字段内按下返回值)

对于返回,您必须将viewcontroller声明为特定textview的委托。

首先设置viewcontroller标头,如下所示:

@interface RegisterViewController : UIViewController <UITextFieldDelegate>

然后在实现中设置委托

// Set Delegates of the Text Fields
eMail.delegate = self;
userPassword.delegate = self;
userNickname.delegate = self;

并使用此委托方法跳转到下一个对象

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{    
    // Jumping code here
    return NO;
}

HOWEVER 在您的情况下,您的文本字段必须在您的对象内,因此您必须使该对象成为委托,并在该对象的实现中跳转代码添加

[thisObjectsTextfield becomeFirstResponder];