2013-01-16 31 views
20

Mam plik UIButton, który jest ładowany z pliku XIB jako właściwość IBOutlet kontrolera widoku. Załączam selektora do przycisku w viewDidLoad mojego widoku kontrolera:UIButton nie wywołuje akcji w systemie iOS 5, ale działa w systemie iOS 6

[_myButton addTarget:self action:@selector(mySelector) forControlEvents:UIControlEventTouchUpInside]; 

W iOS 6 wszystko działa, ale gdy uruchamiam na symulatorze w iOS 5.0 wybierak nie zostanie wywołana. Przycisk podświetla się po dotknięciu.

Inną rzeczą, na którą należy zwrócić uwagę, jest przycisk w postaci UIView z dodanym UITapGestureRecognizer. UITapGestureRecognizer dla tego widoku jest wywoływany w iOS 5.0, gdy przycisk jest dotknięty, (nie jest wywoływany w systemie iOS 6, gdzie zamiast tego jest wywoływany przycisk wyboru).

Nie mam urządzenia z systemem iOS 5, więc nie testowałem urządzenia, tylko symulatora.

Czy ktoś wie, co się tutaj dzieje i jak go rozwiązać?

Odpowiedz

24

Wyjaśniłeś bardzo pięknie przyczynę problemu. W systemie iOS 5 funkcja UITapGestureRecognizer dotycząca podglądu przycisku zakłóca działanie przycisku. W systemie iOS 6 naprawili to: wprowadzili wydarzenie UIView gestureRecognizerShouldBegin:, a przycisk automatycznie zwraca wartość NO dla czytnika gestów podłączonych do podglądu.

W przypadku systemu iOS 5 należy użyć metody delegatów na wykrywaczu gestów, aby uniemożliwić rozpoznanie, czy kliknięty widok był przyciskiem.

+0

Dzięki za wyjaśnienie. Wypróbuję to rozwiązanie. – Darren

+2

Ta odpowiedź zawiera kod: http://stackoverflow.com/questions/13515539/uibutton-not-works-in-ios-5-x-everything-is-fine-in-ios-6-x –

0

W moim przypadku użyłem również ogólnego UITapGestureRecognizer do odrzucenia klawiatury otwartej przez pole tekstowe, gdy użytkownik dotknął dowolnego miejsca w głównym widoku.

I ustalony to tylko przez dodanie Rozpoznawanie gestów kiedy klawiatura pojawia się (patrz

- (void)keyboardWillShow:(NSNotification *)n lub

- (BOOL)textFieldShouldBeginEditing:(VDTextFieldWithError *)textField)

a następnie usunięcie Rozpoznawanie gestów gdy ukrywanie klawiatury (czyli usunięcie selektor w metodzie selektora samego aparatu rozpoznającego)

Powiązane problemy