不从方法触发UIButton的事件处理程序

我只需要以编程方式触发一个UIButton。 我见过很多post,如http://stackoverflow.com/questions/5625651/programmatically-fire-button-click-event

[btnLocation sendActionsForControlEvents:UIControlEventTouchDown];

这个语句在“viewDidLoad”和另一个button处理程序中工作正常。

 -(void)viewDidLoad { [btnName2 sendActionsForControlEvents:UIControlEventTouchDown]; } &&&&&&& - (IBAction)btnName1:(id)sender { [btnName2 sendActionsForControlEvents:UIControlEventTouchDown]; } 

这工作正常。 但为什么不从用户定义的方法触发。 喜欢这个 :

 -(void) myMEthod { if(true) { [btnName2 sendActionsForControlEvents:UIControlEventTouchDown]; } } 

简单的一个。 但我没有得到理由

我只需要知道为什么不会发生? 而实现它的任何替代方法?

谢谢。

可能是尝试在另一个线程上调用UI事件的问题。 尝试添加这个:

  - (void)fireButtonEvent:(id)unused { [btnName2 sendActionsForControlEvents:UIControlEventTouchDown]; } 

然后打电话使用

  [self performSelectorOnMainThread:@selector(fireButtonEvent:) withObject:nil waitUntilDone:false];