2013-05-02 108 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

相關問題