1

我有多个从键盘输入的自定义类实例。你可以想到UITextField(但他们不是UITextField,他们是NSObject)。但是,它们都有一个属性UIControl *control

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

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

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

问题:因为这些对象都是NSObjects,如何截取到下一个对象的过渡。我尝试使用标签或跟踪谁是第一响应者,但问题是,如果用户无序地点击对象,那很好 - 我不想拦截它。我只想拦截从一个对象到花药的转换,只有通过点击键盘的TAB(或NextReturn)按钮。

任何想法?谢谢。

4

1 回答 1

1

您可以将自定义类设置为具有这样的内容

@interface testClassButtonSub : UIButton

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

@end

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

对于回报,您必须将您的视图控制器声明为特定文本视图的代表。

首先,您像这样设置 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;
}

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

[thisObjectsTextfield becomeFirstResponder];
于 2012-11-21T02:08:38.637 回答