繁体   English   中英

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

[英]How can i trigger keyboard focus (tab key) event on an element in iOS programmatically?

我有一个选项卡列表,我基本上想在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键,然后在循环中转到下一个选项卡项目。

任何线索将不胜感激。

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

创建UITextField的子类:

class TextField: UITextField { ... }

在其中添加一个属性:

@IBOutlet var nextTextField: TextField?

然后,在情节nextTextField板内部或在代码中,连接文本字段的nextTextField属性并确保已设置委托

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

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

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


对不起Swift代码,我对Objective-C并不了解

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM