2012-05-31 9 views
5

Klawiatura pokazana poniżej nie jest częścią ustawień domyślnych dostarczanych przez Cocoa, więc musi być niestandardowo zbudowana. Potrzebuję stworzyć klawiaturę, która wygląda jak ta poniżej.Klawiatura niestandardowa i znaki dla iPhone'a w Objective C

Widziałem kilka aplikacji tam, które go używają, widziałem kilka samouczków, które dodawały niestandardowy pasek na górze z niektórymi przyciskami, ale potrzebuję go, aby wyglądał i działał jak normalna klawiatura, ale z dodatkowym rzędem liczb.

Jak to zrobić programowo w Celu C? Czy ktoś może wskazać mi właściwy kierunek?

enter image description here

+1

możliwy duplikat [iPad GUI klawiatury] (http://stackoverflow.com/q/2558806/), http://stackoverflow.com/q/4459375/, http://stackoverflow.com/q/ 8322989 /, http://stackoverflow.com/q/1610542/, http://stackoverflow.com/q/5603103/, http://stackoverflow.com/q/789682/, http://stackoverflow.com/ q/9451912, http://stackoverflow.com/q/1332974/ –

+2

Zasadniczo cała pierwsza strona [wyszukania "niestandardowej klawiatury iphone"] (http://stackoverflow.com/search?q=custom+iphone+ klawiatura). –

Odpowiedz

2

obraz w swoim pytaniu jest z projektu 5RowQWERTY: http://code.google.com/p/networkpx/wiki/Using_5RowQWERTY

Projekt ten działa tylko na jailbroken urządzenia (o ile mogę powiedzieć) i na pewno korzysta z prywatnych API, dzięki czemu jest nie do przyjęcia sklep z aplikacjami. Jeśli te ograniczenia są w porządku z tobą, po prostu użyj tego projektu. Instaluje nowy plik układu klawiatury (layout.plist).

Jeśli chcesz używać urządzeń nieobsługiwanych przez jailbreak lub umieścić aplikację w sklepie z aplikacjami, nie będziesz mógł korzystać z tej metody. Widzę trzy możliwości:

  1. grzebać w widoku hierarchii w klawiaturze po wydaje się (ma własną UIWindow więc zacząć od tablicy [[UIApplication sharedApplication] windows]) i dodawanie własnych przycisków numerycznych. Jest to dużo pracy, bardzo trudne do zrobienia, i całkiem prawdopodobne, że i tak zostanie odrzucone przez Apple.

  2. Ponownie zaimplementuj klawiaturę od podstaw. Jest to ogromna ilość pracy, jeśli chcesz obsługiwać wiele układów klawiatury i naprawdę pasuje do odczuć i zachowania klawiatury systemowej.

  3. Poddaj i ustaw inputAccessoryView na rząd przycisków numerycznych. To jest łatwe.

Moja rada jest taka, że ​​wszystko oprócz opcji 3 to strata czasu. Po prostu użyj numeru inputAccessoryView, aby wyświetlić pasek liczb i przejść do części aplikacji, które dodają rzeczywistą wartość dla użytkowników.

+0

Tak, to prawda, to tam dostałem obraz. Moje pytanie, jak to zrobić. Zdecydowanie nie można mieć aplikacji jailbreak lub odrzuconej. Brzmi jak bolesna opcja 2, być może ta, którą będę musiał przestrzegać, ponieważ klient zdecydowanie chce tej klawiatury. Dzięki! –

1

To niezwykle otwarte pytanie skończyła. Zasadniczo pytasz "Jak utworzyć niestandardowy widok w systemie iOS?"

Oto kilka punktów, aby rozpocząć:

  1. Ty tworzysz nowy widok, który ma wygląd domyślnej klawiatury systemu. Będziesz musiał zebrać zasoby (albo je utworzyć, albo uzyskać darmowe) dla każdego przycisku klawiatury.

  2. Możesz umieścić to wszystko razem w IB. Twój widok to nic więcej niż zbiór UButtonów.

  3. Aby użyć klawiatury, przypisujesz widok jako inputView.

Oto poradnik, który buduje niestandardowe inputView: http://www.raywenderlich.com/1063/ipad-for-iphone-developers-101-custom-input-view-tutorial

+0

Pytanie nie dotyczy tego, jak utworzyć niestandardowy widok, ale jak dodać wiersz przycisku numerycznego do domyślnej klawiatury. –

5

można użyć UIToolbar i dodać przyciski 0-9 na nie. Możesz nawet kolorować lub przyciemniać go tak, by był szary jak klawiatura iPhone'a, ale nie ma sposobu, aby dodać go do rzeczywistego widoku klawiatury.

//Feel free to change the formatting to suit your needs more 
//And of course, properly memory manage this (or use ARC) 

UIBarButtonItem *my0Button = [[UIBarButtonItem alloc] initWithTitle:@"0" style:UIBarButtonItemStyleBordered target:self action:@selector(addNumberToString:)]; 
UIBarButtonItem *my1Button = [[UIBarButtonItem alloc] initWithTitle:@"1" style:UIBarButtonItemStyleBordered target:self action:@selector(addNumberToString:)]; 

UIToolbar *extraRow = [[UIToolbar alloc] init]; 
extraRow.barStyle = UIBarStyleBlack; 
extraRow.translucent = YES; 
extraRow.tintColor = [UIColor grayColor]; 
[extraRow sizeToFit]; 
NSArray *buttons = [NSArray arrayWithObjects: my0Button, my1Button, etc, nil]; 
[extraRow setItems:buttons animated:YES]; 
textView.inputAccessoryView = extraRow; 



-(void) addNumberToString: (id) sender 
{ 
    //Where current string is the string that you're appending to in whatever place you need to be keeping track of the current view's string. 
    currentString = [currentString stringByAppendingString: ((UIBarButtonItem *) sender).title; 
} 
+0

Tak, uważam, że jest to jedyny sposób, aby zrobić to bez jailbreakingu. –

Powiązane problemy