如何以编程方式触发iOS元素上的键盘焦点(Tab键)事件?

时间:2018-10-24 10:19:26

标签: ios

我有一个选项卡列表,我基本上想在XCUITest中自动化一个测试用例,在这里我可以通过iPhone / iPad中的选项卡键或左右箭头键在选项卡之间导航。

我曾尝试将tabsView设置为FirstResponder。

代码:

self.tabTitles = [NSMutableArray arrayWithArray:@[@"TAB1", @"TAB2", @"TAB3", @"TAB4",@"TAB5", @"TAB6", @"TAB7", @"TAB8"]];

self.tabsView = [[AdobeSCTabs alloc] initWithFrame:CGRectZero];
self.tabsView.delegate = self;
[_tabsView becomeFirstResponder];
[self.testingView addSubview:self.tabsView];

但是使用此代码,当我手动按Tab键时,控件将移至第一个标签项。

我搜索了“ KeyEvents”,但是作为Apple Documentation,它们用于macOS。 我想自动在整个选项卡列表上按一个选项卡键。这样,当我调用一个方法时,将首先在第一个项目上按Tab键,然后在循环中转到下一个选项卡项目。

任何线索都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我不确定是否存在针对此问题的现成解决方案。我将其实现如下:

创建UITextField的子类:

class TextField: UITextField { ... }

在其中添加属性:

@IBOutlet var nextTextField: TextField?

然后,在情节提要中或在代码中,连接文本字段的nextTextField属性并确保已设置代理人

使您的视图控制器符合UITextFieldDelegate并实现方法shouldReturn

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    (textField as? TextField)?.nextTextField.becomeFirstResponder()
    return true
}

您现在可以使用返回键来获得所需的行为:)


抱歉,Swift代码,我对Objective-C不太了解