2009-06-24 15 views
6

Przesunąłem widok alertu nieco wyżej, więc mogę dopasować klawiaturę również do ekranu. Po prostu robię to, chwytając ramkę alertu i zmieniając Y po tym, jak już pokazałem alert, aby zmienne ramki były poprawne. Działa to dobrze na symulatorze, ale kiedy robię to na sprzęcie, alarm zaczyna się we właściwej pozycji, ale potem niemal natychmiast przeskakuje do pierwotnego pionowego centrum. Czy pozycja UIAlertView jest stałą rzeczą, która nie powinna zmieniać się zgodnie z wytycznymi dotyczącymi użyteczności lub czy robię coś niepoprawnie?Czy mogę przenieść UIAlertView?

Dzięki!

Odpowiedz

22

Z jakiego systemu operacyjnego tego próbujesz? Dostałem to do pracy zarówno na symulatorze OS 3.0 i OS 3.0 Device:

UIAlertView * alert = [ [ UIAlertView alloc ] initWithTitle:@"Alert" message:@"Alert" 
         delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil ]; 

alert.transform = CGAffineTransformTranslate(alert.transform, 0.0, 100.0); 

[ alert show ]; 

CGAffineTransformTranslate przyjmuje trzy argumenty: istniejące przekształcać, X-przekształcać, a y przekształcić. W tym przykładzie, widok alertu pojawił się o 100 pikseli wyżej niż zwykle. Spróbuj tego i zobacz, co się stanie.

Ponadto jestem przekonany, że można zmodyfikować ramkę przed wyświetleniem alertu, ponieważ prawdopodobnie domyślnie ustawi ramkę alertu w polu init na środek całego ekranu.

+0

Dzięki transformacji zrobiłem lewę, z jakiegoś powodu przeniesienie jej przy użyciu współrzędnych ramki było problemem. – Skyler

+0

to działało dla mnie w ios 3.0, ale z jakiegoś powodu nie działa w ios 4.0 .... –

1

Czy alert nie ma być oznaczony jako modal - tzn. Czy generalnie nie wykonałbyś żadnych innych danych wejściowych użytkownika, gdy alarm jest aktywny? Jeśli tak, to dlaczego potrzebujesz widoczności klawiatury?

+3

Jeśli ma pole tekstowe dodane jako wyskakujący widok alertu, warto chcieć zobaczyć klawiaturę tak, jak robi to App Store, gdy prosi o podanie hasła do iTunes przed pobraniem aplikacji. – LucasTizma

+0

Dzięki za komentarz - nie myślałem o tym scenariuszu. – teabot

2

Ponieważ iOS4 porusza się wokół UIAlertViews staje się trudny. Zauważyłem, że jeśli dodasz podgląd subskrypcji UITextField na UIAlertView, w systemie iOS4 alert zostanie przesunięty w górę, aby klawiatura nie nakładała się na niego. To się nie zdarza < iOS4.

Zauważyłem również, że ramka alarmu nie jest inicjowana nawet po wywołaniu programu, więc nie ma łatwego, programowego sposobu wykonania względnej transformacji CGAffineTransformation. Jedynym rozwiązaniem byłoby wykonanie transformacji warunkowych na podstawie wersji systemu operacyjnego.

Dla mnie wygląda to na wątkowanie nieudokumentowanego zachowania UIAlertViews, które może ulec zmianie w dowolnym momencie. Nie sądzę, aby firma Apple miała na celu używanie alertów do czegoś więcej niż tekstów i przycisków (nawet jeśli ich własne aplikacje łamią tę zasadę).

Po pierwsze zacznę tworzyć własne niestandardowe alerty dla tego typu scenariuszy.