2010-12-08 12 views
10

Sólo sé cuantas maneras de mostrar un teclado en iOS¿Cómo mostrar un teclado a través de presionar un NSButton?

campo de texto táctil, barra de búsqueda, TextView .....

es que puede a través de toque de un botón para mostrar el teclado ???

Deseo poder usar esta forma para establecer un título de botón si el botón no es pequeño o puedo cambiarle el nombre.

Gracias chicos ~

+0

Básicamente, debe crear un control que pueda convertirse en el primero en responder e implemente UITextTraits; luego, cuando ese control se convierta en el primero en responder, el teclado mostrará si no se muestra ya. –

Respuesta

14

es necesario agregar un UITextField a la vista y llamar a continuación [myTextfield becomeFirstResponder]; Su posible ajustar el attrribute oculto de UITextField a YES - por lo que el usuario nunca verá el campo de texto. Después de que la entrada del teclado haya finalizado, puede eliminar UITextField con removeFromSuperview.

Tal vez un poco sucio, pero esa es la solución que he usado a menudo. Me pregunto si el SDK ofrece otra posibilidad.

+0

No sé ... tal vez pueda agregar un campo de texto en un botón y ocultarlo –

+0

No es necesario, también puede estar en otro lugar en su vista. Solo es importante, que llame a becomeFirstResponder cuando se hace clic en su botón, de lo que aparecerá el teclado. Puede cambiar dinámicamente el texto del botón (es decir, utilizando el protocolo UITextFieldDelegate). – Constantin

+0

Hay una solución mejor a continuación utilizando el protocolo UIKeyInput. – wzbozon

3

Necesita algún tipo de método de entrada como UITextField en el que puede ingresar un nombre para su botón. Si lo desea, puede crear un UIButton que muestra el campo de texto (lo han ocultado por defecto) y hace que sea el primero en responder haciendo:

textField.hidden = NO; 
[textField becomeFirstResponder]; 

Una vez que escriba algo que desea en su campo de texto, puede hacerlo por lo que el teclado desaparece, el campo de texto está oculto y el texto UIButton se cambia al texto ingresado.

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

¿y si no quiero a través del campo de texto? Su campo de texto.hidden = No; eso significa que el usuario verá el campo de texto. ¿Ninguna solución para ocultar esto? o que no use el campo de texto? –

+0

Puede hacer que el campo de texto sea difícil de ver cambiando su borde. –

5

La documentación para el UIKeyInput protocol dice lo siguiente:

Una subclase de UIResponder puede adoptar este protocolo para poner en práctica la entrada de texto. Cuando las instancias de esta subclase son la primera respuesta, se muestra el teclado del sistema.

Solo un pequeño subconjunto de los teclados e idiomas disponibles están disponibles para las clases que adoptan este protocolo.

Esto podría satisfacer sus necesidades mejor que un campo/vista de texto oculto.

+0

Solución perfecta. Funciona y solo necesitas agregar un protocolo a tu clase. @interface UIBubbleTableViewCell: UITableViewCell wzbozon

+1

Genial. Solo para ayudar: necesita que su clase anule "canBecomeFirstResponder" y devuelva SÍ para que funcione, además de implementar insertText, hasText y deleteBackward. – narco

Cuestiones relacionadas