iphone - 识别按下选项卡按钮以移动到下一个响应者

标签 iphone ios ipad uicontrol uiresponder

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

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

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

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

问题:因为这些对象是NSObject,我怎样才能拦截到下一个对象的转换。我尝试使用标签或跟踪谁是第一响应者,但问题是,如果用户不按顺序点击某个对象,那也没关系——我不想拦截它。我只想拦截从一个对象到另一个对象的转换仅当是通过点击TAB(或NextReturn) 键盘按钮。

有什么想法吗?谢谢。

最佳答案

你可以将你的自定义类设置成这样

@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/

相关文章:

ios - 使用 Apple 登录 : Possibility To Create Duplicate Account Issue

ios - Xcode Storyboard - 如何在不同的 iPhone 屏幕尺寸之间更改元素的字体大小和位置

ios - 如何在 iOS 11 上检测 iPhone/iPad 设备上的总可用/空闲磁盘空间

ios - 在 'mylabel' 类型的对象上找不到属性 'uitableviewcell'

iPhone - 在旧版 SDK : __IPHONE_OS_VERSION_MAX_ALLOWED values 上编译

iphone - popviewcontroller 没有调用 viewWillappear

ios - 在 iPod Touch/iPhone Objective-C 中保存数据的最佳方式

ios - 直到您第二次按下时,UI 按钮才会执行操作

ios - 如何动态设置 UILabel 宽度?

iphone - 当应用程序进入后台模式时释放图形