2013-02-07 31 views
6

Składniki tekstowe UIKit, takie jak UITextView i UITextField, mają właściwość inputView w celu dodania niestandardowej klawiatury. Mam dwa pytania na ten temat.Animowanie tekstu UITextInput TekstInputView

  1. Jeśli klawiatura jest obecnie widoczny i właściwość jest ustawiona na nowym widoku wejściowego, nic się nie dzieje. Rezygnacja i odzyskanie statusu pierwszego ratownika odświeża dane wejściowe i wyświetla nowy widok. Czy to najlepszy sposób na zrobienie tego? Jeśli tak, to może odpowiedzieć na moje większe pytanie:

  2. Czy można animować przejście między dwoma widokami wejściowymi?

+0

Opcja 'nieruchomość textInputView' jest tylko do odczytu. Nie można go zmienić. Kiedy fokus zmienia się z jednego pola na drugie, mamy do czynienia z zupełnie nową instancją obiektu opartego na "UITextInput". – rmaddy

+0

Podklasy mogą przesłonić właściwość, aby umożliwić jej zapisywanie. Z UITextField.h: '@property (readwrite, retain) UIView * inputView;' Przełączanie działa dobrze, po prostu nie aktualizuje hierarchii widoku do czasu, gdy dane wejście stanie się pierwszą odpowiedzią. –

+3

Mylicie 'UITextField inputView' i' UITextInput textInputView'. To nie to samo. Ale masz rację, że zmiana właściwości 'inputView' z' UITextField' i 'UITextView' nie ma wpływu, jeśli pole/widok jest już pierwszą odpowiedzią. – rmaddy

Odpowiedz

1

Od docs UIResponder:

odpowiadającego obiekty, które wymagają niestandardowego widoku, aby zebrać dane od użytkownika powinno redeclare tę nieruchomość jako ReadWrite i użyć go do zarządzania ich widok niestandardowy wejściowego. Gdy odbiornik następnie staje się pierwszym responderem, infrastruktura respondera automatycznie wyświetla określony widok wejściowy. Podobnie, gdy widok rezygnuje z pierwszego statusu respondenta, infrastruktura respondera automatycznie odrzuca określony widok.

Tak niestety odpowiedź do 1 i 2 jest Tak jest nr

0
  1. Faktycznie istnieje sposób, aby to zrobić czysto: UIResponder „s reloadInputViews, dostępny z systemem iOS 3.2!

  2. myślę, że można go z jakimś animowane dodatkowej pracy:

    • Tworzenie jasnego tła okna wyższej UIWindowLevel niż okno klawiatury.
    • Dodaj własną klawiaturę i animuj jej ramkę na swoim miejscu.
    • Następnie ustaw jako wpis tekstowy na inputView i odśwież pierwszą odpowiedź tak jak Ty.

Niestandardowa klawiatura zmieni swój pogląd nadrzędnej z okna niestandardowego do klawiatury jedną, ale mam nadzieję, że użytkownik nie zauważy;)

Powiązane problemy