2010-11-02 2 views
0

Хорошо, ребята, я уверен, что есть простое решение этой проблемы. У меня есть четыре IBActions: вверх, вниз, влево, вправо. Мне нужно только одно действие для выполнения, оставив три других доступных, например. Если я нажимаю, доступны только вниз, влево и вправо, поэтому я не могу дважды нажать одно и то же действие подряд. И это одинаково для других действий, например. Я могу только нажимать один раз один раз, а затем нажимать на действие справа, вниз или вверх. Если кто-нибудь знает решение этого, я был бы признателен за помощь. Спасибо!Кнопка отключения iPhone отключена

ответ

5

Сохраните массив кнопок, а затем на разных обработчиках вы включите их все, кроме тех, которые были задействованы. Например:

- (IBAction)up { 
    for(UIButton *button in self.allButtons) { 
     [button setEnabled:YES]; 
    } 

    [self.upButton setEnabled = NO]; 
} 
+0

Thanks BEn ... !!! – Michael

0
[self.yourButton addTarget:self action:@selector(yourAction) forControlEvents:UIControlEventTouchUpInside]; 

- (void)yourAction 
{ 
    [self.yourButton setEnabled:NO]; 
} 
0

Мне нравится идея, что Ben Scheiman имеет в своем ответ о имеющем множество кнопок, но вместо того, чтобы иметь метод для каждого из кнопок было бы больше смысла, чтобы просто иметь один метод это делает все, что бы вы ни нажали. Также я не уверен на 100%, что последняя строка его кода верна. Таким образом, более чистый способ сделать это будет делать:

// Probably the biggest difference is I have added a parameter that will be the button. 
- (IBAction)directionalButtonLock:(id)sender 
{ 
    // Credit to Ben Scheiman's answer here. 
    for (UIButton *button in [self allButtons]) { 
     [button setEnabled:YES]; 
    } 
    [sender setEnabled:NO]; // Disable the pressed button. 
} 
Смежные вопросы