如何以编程方式假触摸事件到UIButton?

我正在编写一些unit testing,并且由于这个特定的应用程序的性质,重要的是尽可能高的UI链。 所以,我想要做的是以编程方式触发button,就好像用户在GUI中按下button一样。

(是的,是的 – 我可以只是调用IBActionselect器,但是,这个特定的应用程序的性质,使得假的实际button,这样IBAction从button本身调用是非常重要的。)

什么是这样做的首选方法?

6 Solutions collect form web for “如何以编程方式假触摸事件到UIButton?”

事实certificate

[buttonObj sendActionsForControlEvents: UIControlEventTouchUpInside]; 

在这种情况下,正是我所需要的。

编辑:不要忘记在主线程中这样做,以获得类似于用户按下的结果。


对于Swift 3:

buttonObj.sendActions(for: .touchUpInside)

Swift的这个答案的更新

 buttonObj.sendActionsForControlEvents(.TouchUpInside) 

编辑 :更新为Swift 3

 buttonObj.sendActions(for: .touchUpInside) 

如果你想做这样的testing,你会喜欢iOS 4中的UI自动化支持。你可以很容易地编写JavaScript来模拟button等,虽然文档(特别是入门的部分)有点儿疏。

在这种情况下, UIButton是从UIControl派生的。 这适用于从UIControl派生的对象。

我想在特定的用例上重用“ UIBarButtonItem ”动作。 在这里, UIBarButtonItem不提供方法sendActionsForControlEvents:

幸运的是, UIBarButtonItem具有target和action的属性。

  if(notHappy){ SEL exit = self.navigationItem.rightBarButtonItem.action; id world = self.navigationItem.rightBarButtonItem.target; [world performSelector:exit]; } 

这里, rightBarButtonItem的types是UIBarButtonItem

对于Xamarin iOS

 btnObj.SendActionForControlEvents(UIControlEvent.TouchUpInside); 

参考

Swift 3:

 self.btn.sendActions(for: .touchUpInside) 
  • 是否可以调整UIButton的位置x,y titleLabel?
  • 如何用Swift更改UIButton的字体
  • 如何使UIButton的文本alignment中心? 使用IB
  • 左alignment图像和UIButton上的中心文本
  • 为什么我不应该inheritance一个UIButton?
  • 如何用iPhone SDK创build一个大的红色UIButton?
  • 如何以编程方式创build一个基本的UIButton?
  • 以编程方式设置UIButton标题UILabel字体大小
  • 在Xcode 5没有回合button?
  • UITableViewCell展开点击
  • 如何在编程创build的UIButton上添加填充左侧?