2013-05-02 3 views
2

Мне просто нужно запускать UIButton программно. Я видел много сообщений, таких как http://stackoverflow.com/questions/5625651/programmatically-fire-button-click-eventNot Triggering обработчик события UIButton по методу

[btnLocations sendActionsForControlEvents: UIControlEventTouchDown];

Это заявление отлично работает в «viewDidLoad», а также в другом обработчике кнопок.

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

&&&&&&& 

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

Это прекрасно работает. но почему он не запускает от пользовательский метод. Как это:

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

Простой один. Но я не понял причину.

Мне просто нужно знать, почему этого не происходит ??? И любая альтернатива для достижения этого?

Спасибо.

+1

является пользователь определен метод вызывается из основного потока? Если нет, вам нужно выполнить performSelectorOnMainThread, так как события пользовательского интерфейса должны запускаться в основном потоке. –

+0

@MikeM: Как позвонить из mainThread. в основном это происходит из MainThread, но я не уверен. –

+0

Wether вводит if (true) {} block ?? –

ответ

3

Возможно, проблема связана с вызовом события пользовательского интерфейса в другом потоке. Попытка добавления этого:

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

, а затем с помощью вызова

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

Прекрасно работает. Спасибо, но не включены все функции. Здесь добавление –

+0

Его запуск для некоторых журналов. На самом деле я добавляю subView в представление. но этого не происходит. Совершенно совершено от UI Click –