2010-12-08 12 views
10

Znam tylko kilka sposobów, aby pokazać klawiaturę na iOSJak wyświetlić klawiaturę przez naciśnięcie klawisza NSButton?

dotykowy textField, paska wyszukiwania, TextView .....

Czy jest możliwe poprzez dotknięcie przycisku, aby wyświetlić klawiaturę ???

Życzę sobie, żebym mógł w ten sposób ustawić wartość przycisku, jeśli przycisk nie jest nazwą lub może zmienić jego nazwę.

Dziękuję chłopaki ~

+0

Zasadniczo musisz utworzyć kontrolkę, która może stać się pierwszą odpowiedzią i zaimplementować UITextTraits, a kiedy ta kontrola stanie się pierwszą odpowiedzią, klawiatura pokaże, czy nie jest już wyświetlana. –

Odpowiedz

14

Trzeba dodać UITextField do widzenia, a następnie zadzwonić [myTextfield becomeFirstResponder]; jego możliwych do ustawienia ukryty attrribute z UITextField do YES - dzięki czemu użytkownik nigdy nie ujrzy pole tekstowe. Po wprowadzeniu danych z klawiatury można usunąć UITextField za pomocą removeFromSuperview.

Może trochę brudna, ale takie rozwiązanie często stosowałem. Zastanawiam się, czy SDK daje kolejną możliwość.

+0

Nie wiem ... może mogę dodać pole tekstowe do przycisku i uczynić go ukrytym. –

+0

Nie trzeba - może być gdzie indziej w twoim widoku! Ważne jest tylko to, że po kliknięciu przycisku wywołuje się stanFirstResponder, niż pojawi się klawiatura. Możesz dynamicznie zmieniać tekst przycisku (np. Za pomocą protokołu UITextFieldDelegate). – Constantin

+0

Istnieje lepsze rozwiązanie poniżej za pomocą protokołu UIKeyInput. – wzbozon

3

Potrzebujesz metody wprowadzania danych, takiej jak UITextField, w której można wprowadzić nazwę przycisku. Jeśli chcesz, możesz utworzyć UIButton który pokazuje textField (które to domyślnie ukryty) i sprawia, że ​​pierwszy responder wykonując:

textField.hidden = NO; 
[textField becomeFirstResponder]; 

Gdy wpiszesz coś chcesz w polu tekstowym, można je więc klawiatura znika, pole tekstowe jest ukryte, a tekst UIButton zmienia się na wprowadzony tekst.

-(BOOL)textFieldShouldReturn:(UITextField*)textField; { 
textField.hidden = YES; 
[textField resignFirstResponder]; 
[yourButton setTitle:textField.text forState:UIControlStateNormal]; 
} 
+0

co jeśli nie chcę przez textfield? Twoje pole tekstowe.hidden = Nie, to oznacza, że ​​użytkownik zobaczy pole tekstowe. Nie ma rozwiązania, aby to ukryć lub nie używać pola tekstowego? –

+0

Możesz sprawić, że pole tekstowe będzie trudne do zobaczenia, zmieniając jego granicę. –

5

Dokumentacja dla UIKeyInput protocol mówi co następuje:

Podklasa UIResponder może przyjąć ten protokół do wdrożenia prostego wprowadzania tekstu. Jeśli instancje tej podklasy są pierwszą odpowiedzią, wyświetlana jest klawiatura systemowa.

Tylko niewielki podzbiór dostępnych klawiatur i języków jest dostępny dla klas, które adoptują ten protokół.

To może lepiej służyć Twoim potrzebom niż ukryte pole tekstowe/widok.

+0

Idealne rozwiązanie. Działa i musisz dodać protokół do swojej klasy. @interface UIBubbleTableViewCell: UITableViewCell wzbozon

+1

Świetnie. Aby pomóc: potrzebujesz swojej klasy, aby zastąpiła "canBecomeFirstResponder" i zwróciła TAK, aby to działało, a także zaimplementować metodę insertText, hasText i deleteBackward. – narco

Powiązane problemy