Creé una UITextField
toma de programación la UITextField
propiedad de la viewController. Necesito descartar el teclado con el retorno y el toque en la pantalla. Pude hacer que el toque de la pantalla se descartara, pero al presionar regresar no funciona.
He visto cómo hacerlo con guiones gráficos y asignando e inicializando el UITextField
objeto directamente sin crearlo como una propiedad. ¿Es posible hacer?
.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITextFieldDelegate>
@property (strong, atomic) UITextField *username;
@end
.metro
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = [UIColor blueColor];
self.username = [[UITextField alloc] initWithFrame:CGRectMake(100, 25, 80, 20)];
self.username.placeholder = @"Enter your username";
self.username.backgroundColor = [UIColor whiteColor];
self.username.borderStyle = UITextBorderStyleRoundedRect;
if (self.username.placeholder != nil) {
self.username.clearsOnBeginEditing = NO;
}
_username.delegate = self;
[self.view addSubview:self.username];
[_username resignFirstResponder];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touchesBegan:withEvent:");
[self.view endEditing:YES];
[super touchesBegan:touches withEvent:event];
}
@end
ios
keyboard
uitextfield
noobsmcgoobs
fuente
fuente
Respuestas:
La forma simple es conectar el delegado de
UITextField
a self (self.mytestField.delegate = self
) y descartar el teclado en el métodotextFieldShouldReturn
usando[textField resignFirstResponder];
Otra forma de descartar el teclado es la siguiente:
Coloque el lugar
[self.view endEditing:YES];
donde le gustaría cerrar el teclado (evento de botón, evento táctil, etc.).fuente
Agregue un método de delegado
UITextField
como este:Y configure su
textField.delegate = self;
luego también agregue dos métodos delegados deUITextField
fuente
@interface MyController : UIViewController <UITextFieldDelegate>
// Ocultar el teclado tocando el fondo en la vista
fuente
simplemente use esto en rápido para descartar el teclado:
Swift 3
fuente
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
SWIFT 4:
o
Establezca el delegado del campo de texto en el controlador de vista actual y luego:
C objetivo:
o
Establezca el delegado del campo de texto en el controlador de vista actual y luego:
fuente
En la App Delegate, puede escribir
use de esta manera, no puede escribir demasiado código.
fuente
Intente tener una idea de lo que es un primer respondedor en la jerarquía de vistas de iOS. Cuando su campo de texto se activa (o el primero en responder) cuando toca dentro de él (o le pasa el mensaje mediante
becomeFirstResponder
programación), presenta el teclado. Entonces, para eliminar su campo de texto de ser el primer respondedor, debe pasarle el mensajeresignFirstResponder
allí.Y para ocultar el teclado en su botón de retorno, debe implementar su método de delegado
textFieldShouldReturn:
y pasar elresignFirstResponder
mensaje.fuente
Esto es lo que uso en mi código. ¡Funciona a las mil maravillas!
En yourviewcontroller.h agregue:
@property (nonatomic) UITapGestureRecognizer *tapRecognizer;
Ahora en el archivo .m, agregue esto a su función ViewDidLoad:
Además, agregue esta función en el archivo .m:
fuente
Para descartar un teclado después de que el teclado ha aparecido, hay 2 casos ,
cuando el UITextField está dentro de un UIScrollView
cuando el UITextField está fuera de un UIScrollView
2.Cuando UITextField está fuera de UIScrollView, anule el método en su subclase UIViewController
también debe agregar delegado para todos los UITextView
para crear una IBAction, presione ctrl + clic en UITapGesture y arrástrelo al archivo .h de viewcontroller.
Aquí he nombrado tappedEvent como mi nombre de acción
La información proporcionada anteriormente se derivó del siguiente enlace, consulte para obtener más información o comuníquese conmigo si no comprende los datos anteriores.
http://samwize.com/2014/03/27/dismiss-keyboard-when-tap-outside-a-uitextfield-slash-uitextview/
fuente
Para un grupo de
UITextView
s dentro de unViewController
:Swift 3.0
C objetivo
fuente
Sé que esto ha sido respondido por otros, pero encontré otro artículo que cubría también sin evento de fondo: tableview o scrollview.
http://samwize.com/2014/03/27/dismiss-keyboard-when-tap-outside-a-uitextfield-slash-uitextview/
fuente
Dado que las etiquetas solo dicen iOS, publicaré la respuesta para Swift 1.2 e iOs 8.4, agréguelas en la clase rápida de su controlador de vista:
Además, no olvide agregar UITextFieldDelegate en la declaración de clase y configure sus campos de texto delegados en self (la vista).
fuente
EN Swift 3
O
fuente
Entonces, esto es lo que hice para que se descarte después de tocar el fondo o regresar. Tuve que agregar delegate = self en viewDidLoad y luego también los métodos de delegado más adelante en los archivos .m.
fuente
Simplemente use esto en Objective-C para descartar el teclado:
fuente
Primero debe agregar el campo de texto delegete en el archivo .h. si no, declare que
(BOOL)textFieldShouldReturn:(UITextField *)textField
este método no se llama. Por lo tanto, primero agregue el delegado y escriba el código oculto del teclado en ese método.prueba este ...
fuente
Agregar delegado: UITextFieldDelegate
y luego agregue este método delegado
// Esto debería funcionar perfectamente
fuente
cuando usa más de un campo de texto en la pantalla Con este método no necesita mencionar el campo de texto cada vez, como
fuente
Rápido 2:
¡esto es lo que se hizo para hacer todo!
cierre el teclado con el
Done
botón oTouch outSide
,Next
para ir a la siguiente entrada.Primero cambie TextFiled
Return Key
ToNext
en StoryBoard.fuente
Si no conoce el controlador de vista actual o la vista de texto, puede usar Responder Chain:
fuente
para swift 3-4 arreglé como
simplemente copie y pegue en cualquier parte de la clase. Esta solución simplemente funciona si desea que todos los campos de texto de la interfaz de usuario funcionen igual, ¡o si solo tiene uno!
fuente