2010-08-04 15 views
6

Szukam niehackish rozwiązanie dla tego, więc w zasadzie -inputView. Częścią, której nie jestem pewien, jest to, jak sprawić, by wyglądała jak zwykłe klawiatury, od tła po klawisze. Zdaję sobie sprawę, że mogłem sfotografować klawiaturę Apple, ale wydaje się, że jest trochę hackish, zwłaszcza jeśli jabłko (prawdopodobnie nie, ale nadal możliwe) decyduje się zmienić wygląd swoich klawiatur. Wiem, że Numbers wykonał znakomitą robotę polegającą na tworzeniu dodatkowych klawiatur, które wyglądają jak standardowe systemy, i chciałbym to zrobić tak, jak te (choć oczywiście mają dostęp do tych samych zasobów, które stworzyły klawisze systemowe, w tym możliwe ramy prywatne, itp.)Niestandardowa klawiatura iPada, która wygląda jak klawiatura systemowa

Odpowiedz

0

Utwórz kontroler widoku i XIB. Xib powinien mieć 1-9,0 i usuwać przyciski odwzorowane na IBOutlets w twoim kontrolerze. Zachowaj i zachowaj ciąg wartości zwracanej jako właściwość. Możesz dodawać miejsca dziesiętne itp., Jeśli chcesz. W nagłówku przechowuj zamknięcie edycji edycji z właściwością (lub alternatywnie utwórz delegata lub użyj powiadomienia).

@property (copy) void(^valueChangedBlock)(NSString* string); 

Na podciąć, każdy przycisk wysyła zdarzenie sposobu jak ten:

- (IBAction) pressKey:(id)sender 
{ 
    NSString *toAppend; 

    // Instead of this switch you can store the values in a dictionary mapped by sender. 
    switch(sender) 
    { 
     case oneButton: [email protected]"1"; break; 
     case twoButton: [email protected]"2"; break; 
     ... 
    } 

    returnValue = [returnValue appendString:toAppend]; 
    valueChanged(returnValue); 
} 

Oczywiście klawisz Delete należy usunąć znak od końca łańcucha zamiast dopisywania. Oprócz tworzenia kontrolera i dodawania tego widoku jako inputView, powinieneś dodać valueChangedBlock i ustawić go, aby zaktualizować pole tekstowe. Możesz ustawić wyraźny niestandardowy przycisk nad polem tekstowym ustawionym tak, aby pole odpowiadało jako pierwsze, aby nie wyglądało tak, jakby użytkownik mógł edytować w dowolnym momencie ciągu znaków.

+0

Cześć Piotrze, w moim przypadku powyższy kod daje błąd jak: wskaźnik nie są dozwolone jako wartości przypadków. Co jest nie tak? Co powinienem zrobić? Proszę o pomoc –

+0

Napisałem ten kod jako przykład, ale potrzebne są pewne modyfikacje. Spróbuj użyć instrukcji if-else, aby sprawdzić, kto jest nadawcą lub, jeszcze lepiej, zapisać przyciski i ich wartości wynikowe w słowniku podczas inicjowania kontrolera dla pojedynczego wyszukiwania linii w metodzie pressKey. –

2

I stosowane są następujące:

tenDigitKeyboard.m

-(IBAction)pressedKey:(UIButton *)sender 
{ 
    [delegate pressedKey:sender.tag]; 
} 

gdzie pełnomocnik jest zdefiniowane jak 'id pełnomocnika;

następnie w delegata I do ...

-(void)pressedKey:(NSInteger)key 
{ 
    NSString * bufferString = model.string; 
    if (key == -1) {//delete 
     model.string = [bufferString substringWithRange:NSMakeRange(0, [bufferString length]-1)]; 
    }else{ 
    //will need to change the following to lookup key value based on a lookup of the button.tag 
     model.string = [bufferString stringByAppendingFormat:@"%i",key]; 
    } 
    [self update];//updates the view 
} 

Mam klawiatura przycisk grafika z: http://www.teehanlax.com/blog/iphone-gui-psd-v4/

Powiązane problemy