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

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

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

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

  • 禁用button
  • 在Xcode 5没有回合button?
  • 如何添加投影到UIButton?
  • UITableViewCell展开点击
  • 保持触摸后select一个UIButton
  • UIButton不会去iPhone的Aspect Fit
  • UIButton:如何使用imageEdgeInsets和titleEdgeInsets居中图像和文本?
  • 如何将多行文本添加到UIButton?
  • 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)