如何以编程假触摸事件,以一个UIButton?
-
26-09-2019 - |
题
我在写一些单元测试,而且由于这种特殊的应用程序的性质,我得到尽可能高了UI
链可能是很重要的。所以,我希望做的是编程触发后的按键,因为如果用户曾在GUI
按下按钮。
(是的,没错 - 我的可能的只是调用IBAction
选择,但同样,这个特定的应用程序的性质使得它重要的是,我假装实际按下按钮,使得IBAction
被称为从按钮,本身。)
什么是这样做的优选方法?
解决方案
事实证明
[buttonObj sendActionsForControlEvents: UIControlEventTouchUpInside];
让我正是我需要的,在这种情况下。
编辑:不要忘记这样做在主线程,以获得类似于用户按下结果
:用于夫特3:强>
buttonObj.sendActions(for: .touchUpInside)
其他提示
的更新此答案为夫特
buttonObj.sendActionsForControlEvents(.TouchUpInside)
修改强>:更新了夫特3
buttonObj.sendActions(for: .touchUpInside)
如果你想要做这种测试,你一定会喜欢在iOS中4 UI自动化支持您可以编写JavaScript来模拟按下按钮,等很容易,虽然文件(特别是工具入门部分)有点稀疏
在这种情况下,UIButton
从UIControl
的。这适用于从对象衍生UIControl
。
我想重用具体的使用情况下,“UIBarButtonItem
”动作。这里,UIBarButtonItem
不提供方法sendActionsForControlEvents:
但幸运的是,UIBarButtonItem
具有用于靶动作性能。
if(notHappy){
SEL exit = self.navigationItem.rightBarButtonItem.action;
id world = self.navigationItem.rightBarButtonItem.target;
[world performSelector:exit];
}
下面,rightBarButtonItem
是类型UIBarButtonItem
的。
夫特3:
self.btn.sendActions(for: .touchUpInside)
夫特4:
自.yourButton(个体)
不隶属于 StackOverflow