2011-12-22 15 views
5

Moja aplikacja będzie wymagać od użytkownika wprowadzania wzorów chemii (H2O, Na^2 +), a ponieważ indeksy dolne i górne mogą spowodować, że proces pisania będzie mylący dla użytkownika, zdecydowałem się stworzyć niestandardową klawiaturę.Czy mogę utworzyć niestandardowe pole tekstowe i klawiaturę dla podklasy UIControl dla systemu iOS bez podwersji?

Gdy użytkownik wpisze liczbę jako indeks dolny, powinien być wyświetlany jako indeks dolny na ekranie. Jedynym sposobem, w jaki to zrobiłem, jest użycie NSAttributedString, który najwyraźniej działa tylko z CoreTextem. Ponieważ nie mogę mieć CoreText w UITextField, muszę również utworzyć niestandardowe pole tekstowe. Szukałem UITextView, ale w dokumentacji czytamy, że style czcionek muszą być spójne w całym tekście, co oznacza, że ​​nie mogę mieć indeksów dolnych.

Czy muszę podklasę UIControl dla obu przypadków i zacząć od zera? Czy istnieje alternatywna klasa, od której mogę zacząć, która ma już pewne właściwości klawiatury/pola tekstowego?

Odpowiedz

5

Tak, musisz utworzyć własną podklasę: UIView.

Ale można łatwo wspierać wprowadzanie danych z klawiatury poprzez przyjęcie protokołu UIKeyInput, nadrzędnymi canBecomeFirstResponder więc zwraca YES i dodanie UITapGestureRecognizer:

[self addGestureRecognizer: 
    [[UITapGestureRecognizer alloc] initWithTarget:self 
              action:@selector(becomeFirstResponder)]]; 

I chcesz, aby umożliwić użytkownikowi wybór zakresów tekstu i używać automatyczną korektę , to trudniejsze: musisz przyjąć protokół UITextInput.

Dostosowywanie klawiatury jest bardzo proste:

  • albo, przesłonić inputAccessoryView które pozwalają na wyświetlanie widoku niestandardowego dołączony do klawiatury,
  • albo, przesłonić inputView dlatego zwraca widoku niestandardowego zostanie wyświetlony zamiast klawiatury.