2012-09-19 6 views
19

Przygotowuję aplikację do iPhone'a 5 za pomocą symulatora i mam Znalazłem dziwny problem, w którym kilka moich przycisków w jednym z moich widoków nie działa w symulatorze iPhone'a (Retina 4-calowy), ale działa dobrze w symulatorze iPhone'a (Retina 3,5 cala). Przyciski po prostu nic nie robią, gdy są dotknięte. Czy ktoś jeszcze doświadczył tego problemu?Mój przycisk nie wykrywa zdarzeń dotykowych w symulatorze iPhone'a (Retina 4-calowym), ale działa w symulatorze iPhone'a (Retina 3,5 cala).

Mam trudny czas, zastanawiając się, od czego zacząć. Wszelkie sugestie dotyczące tego, od czego zacząć?

Dziękuję z góry za całą waszą mądrość!

+2

Tylko zgadnij, ale czy sprawdziłeś, czy żadne przezroczyste widoki nie nakładają się na przyciski? Być może sprężyny i rozpórki nie zrobiły tego, czego się spodziewałeś dzięki rozdzielczości ekranu iPhone'a 5. – Sascha

+1

Mam do czynienia z tym samym problemem. W moim przypadku dolny region (prawdopodobnie dodatkowy .5 cala) nie reaguje. Przyciski paska tabulacji umieszczone tam nie będą działały, próbując machać przewijaniem UITableView z tego regionu również nie działa. Czy przyciski znajdują się również w dolnej części? – pennersr

+2

@pennersr: próbowałeś tego? to mi nie pomogło, ale mam nadzieję, że ci to pomoże. http://stackoverflow.com/questions/12414817/iphone-5-4-bottom-toolbar-not-responding – BeachRunnerFred

Odpowiedz

4

Problem spowodowany jest przez inną kontrolę nakładającą się na moje guziki ze względu na sposób ustawienia sprężyn i rozporków. Dostosowanie kolejności Z przycisków naprawiło problem. Dziękuje wszystkim!

8

Dla mnie rozwiązaniem było ustawienie rozmiaru ("Symulowane dane") na "Pełny ekran Retina 4" dla pliku MainWindow.xib. Nie musiałem zmieniać rozmiaru pozostałych ekranów (nadal są ustawione na Brak). Po zmianie pliku MainWindow.xib dolny obszar staje się znowu klikalny ...

+0

Należy zachować ostrożność. To faktycznie zamaskuje problem, ponieważ umożliwia tylko zdarzenia dotykowe na pełnym ekranie symulatora. Na prawdziwym urządzeniu zdarzenia dotykowe nadal nie będą działały, dopóki nie włączysz opcji Pełny ekran przy uruchomieniu w MainWindow.xib. Zobacz moją odpowiedź na bardziej kompletne wyjaśnienie. –

+0

To nie działa poprawnie, ponieważ zmieni tylko rozmiar widoku. Rzeczy mogą nie zmienić rozmiaru poprawnie na ekranie 3,5 cala. Najlepszym rozwiązaniem jest włączenie "Pełnego ekranu podczas uruchamiania" dla głównego okna. – kamprath

32

Musisz edytować plik MainWindow.xib i włączyć "Pełny ekran podczas uruchamiania". Aby uzyskać bardziej szczegółowe wyjaśnienie, zobacz Apple docs:

Ważne: Podczas tworzenia okna w konstruktorze Interface, to Zaleca się, aby włączyć pełny ekran w opcji Uruchom w Inspektorze atrybutów. Jeśli ta opcja nie jest włączona, a okno jest mniejsze niż ekran urządzenia docelowego, zdarzenia dotykowe nie będą odbierane w niektórych widokach przez . Dzieje się tak dlatego, że okna (takie jak wszystkie widoki ) nie otrzymują zdarzeń dotykowych poza prostokątem ich granic. Ponieważ widoki nie są domyślnie przycinane do granic okna, widoki nadal są widoczne, ale zdarzenia nie docierają do nich. Włączenie opcji Pełny ekran przy uruchomieniu zapewnia, że ​​okno ma rozmiar odpowiedni dla bieżącego ekranu.

Complete document from Apple

+1

Naprawiłem to dla mnie. – jbierling

+0

Wielkie dzięki, naprawiłem mój problem! – Stiefel

+1

na umieszczenie zakładek w mojej aplikacji nie działanie zdarzeń dotykowych na 4" . To naprawić go ... dzięki. – Ben

1

mi rozwiązać mój prob.

Widok .origin na ekrany 3,5 cala i 4 cale są różne, więc przy pisaniu wspólnego kodu dla obu musimy zadbać o podanie CGRectmake(x,y,w,h);

Ustaw temp. diff kolor tła widoku różnicowego, dzięki czemu można sprawdzić, czy jakikolwiek widok nakłada się, czy nie, aby pobrać zdarzenie w 4,0 cala.

4

Istnieją dwa rozwiązania tego problemu:

Jeśli używasz MainWindow wykonaj następujące kroki:

a. Wybierz MainWindow.xib.

b. Wybierz opcję Full Screen at Launch z opcji systemu Windows dostępnej w Inspektorze atrybutów.

Jeśli aplikacja nie zawiera MainWindow potem tylko dodać:

self.view.frame = [UIScreen mainScreen].bounds 

w viewDidLoad.