2010-08-04 8 views
6

Estoy buscando una solución no hackish para esto, por lo que básicamente -inputView. La parte de la que no estoy seguro es cómo hacer que se vea como los teclados normales, desde el fondo hasta las teclas. Me doy cuenta de que podría hacer photoshop con un teclado de Apple, pero parece que es un poco hackish, especialmente si la manzana (probablemente no, pero aún es posible) decide cambiar el aspecto de sus teclados. Sé que Numbers ha hecho un excelente trabajo al fabricar teclados extra que se parecen a los del sistema estándar, y me gustaría hacerlo así (aunque obviamente tienen acceso a los mismos recursos que hicieron los teclados del sistema, incluidos posibles marcos privados, etc.)teclado de iPad personalizado que se parece a los teclados del sistema

Respuesta

0

Crea un controlador de vista y xib. El xib debe tener 1-9,0 y eliminar los botones asignados a IBOutlet en su controlador. Almacene y conserve la cadena de valor de retorno como una propiedad. Puedes agregar decimales, etc. si lo deseas. En el encabezado, almacene un cierre de bloque de edición con una propiedad (o alternativamente, cree un delegado o use una notificación).

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

En retoque, cada botón envía un evento a un método como este:

- (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); 
} 

Obviamente la tecla de borrar debe eliminar un carácter desde el final de la cadena en lugar de añadir. Además de crear el controlador y agregar esta vista como el inputView, debe agregar el valueChangedBlock y configurarlo para actualizar el campo de texto. Es posible que desee colocar un botón personalizado claro sobre el conjunto de campos de texto para que el primer respondedor de campo no parezca que el usuario puede editar en cualquier punto de la cadena.

+0

Hola Pedro, en mi caso el código anterior da error como: No se permite puntero como valores de casos ¿Qué está mal? ¿Que debería hacer? por favor, ayuda –

+0

Escribí ese código como ejemplo, pero se necesitan algunas modificaciones. Intente usar declaraciones if-else para verificar quién es el remitente o, mejor aún, almacene los botones y sus valores resultantes en un diccionario durante la inicialización del controlador para una búsqueda de línea única en el método pressKey. –

2

I utilizó la siguiente:

tenDigitKeyboard.m

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

donde delegado se define como `delegado de id;

continuación, en el delegado que hago ...

-(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 
} 

tengo el botón del teclado de la obra: http://www.teehanlax.com/blog/iphone-gui-psd-v4/

Cuestiones relacionadas