2013-05-02 73 views
2

我只需要以编程方式触发UIButton。我见过很多帖子,如http://stackoverflow.com/questions/5625651/programmatically-fire-button-click-event不触发来自方法的UIButton的事件处理程序

[btnLocation sendActionsForControlEvents:UIControlEventTouchDown];

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

-(void)viewDidLoad 
{ 
[btnName2 sendActionsForControlEvents:UIControlEventTouchDown]; 
} 

&&&&&&& 

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

这工作正常。但为什么它不是从用户定义的方法触发。 想要这样:

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

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

我只需要知道为什么它不会发生?还有什么替代方案来实现它?

谢谢。

+1

是从主线程调用用户定义的方法?如果没有,你需要执行一个performSelectorOnMainThread,因为UI事件必须在主线程上运行。 – 2013-05-02 11:39:55

+0

@MikeM:如何从mainThread调用。基本上它只从MainThread发生,但我不确定\。 – 2013-05-02 11:47:36

+0

是否进入if(true){} block? – 2013-05-02 11:50:37

回答

3

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

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

,然后调用使用

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

工作正常。谢谢但不包括所有功能。这里添加 – 2013-05-02 12:10:36

+0

它触发了一些日志,其实我将subView添加到视图。但这不是从这个方向发生的。从UI点击完美发生 – 2013-05-02 12:14:04

相关问题