iphone - tamaño - Teclado iPad personalizado que se parece a los teclados del sistema
teclado iphone 7 (2)
Estoy buscando una solución no hackish para esto, así 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.)
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);
Al retocar, 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: toAppend=@"1"; break;
case twoButton: toAppend=@"2"; break;
...
}
returnValue = [returnValue appendString:toAppend];
valueChanged(returnValue);
}
Obviamente, la clave de eliminación debe eliminar un carácter del final de la cadena en lugar de anexar. 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.
Usé lo siguiente:
tenDigitKeyboard.m
-(IBAction)pressedKey:(UIButton *)sender
{
[delegate pressedKey:sender.tag];
}
donde delegado se define como `id delegado;
entonces en el delegado lo 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
}
Obtuve el diseño del botón del teclado en: http://www.teehanlax.com/blog/iphone-gui-psd-v4/