2011-02-09 13 views

Respuesta

24

método tochesBegin uso para este propósito

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    [yourFirstTextField resignFirstResponder]; 
    [yourSecondTextField resignFirstResponder]; 
} 

que no es necesario ninguna cosa else.When se toca en cualquier lugar de la vista entonces ambos textField renunciar sin necesidad de saber cuál tener focus.and cuando se toca textField luego, textField abre el teclado por su cuenta.

+0

Ji, está funcionando perfectamente, he aceptado su respuesta, Gracias :-) –

+0

@veer de bienvenida. – Ishu

+1

También agregué "[super touchesBegan: touques withEvent: event];" por si acaso. –

-1

Mantener una referencia a la UITextField en su controlador de vista y llamar [yourTextField resignFirstResponder]

+0

lo que hace que significaría referencia, ¿cómo puedo código Por favor, explique un poco más –

+0

Quiero decir que solo tengo un IBOutlet para el UITextField, luego cuando hay un toque en cualquier otro lugar, llame a [yourTextField resignFirstResponder] –

1

Es necesario crear un botón personalizado en el fondo y luego conectarlo al método IBAction que llama resignFirstResponder en la que su UITextField

algo como esto enter image description here

Editar:

como WA nt para agregar el botón mediante programación que puede utilizar este código

- (void)viewDidLoad 
{ 
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    button.buttonType = UIButtonTypeCustom; 
    [button addTarget:self action:(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:button]; 
    [button release]; 

y luego agregue el código del controlador después de esto.

+0

my all La codificación es manual, no basada en Interface Builder, entonces ¿cómo puedo llamar? un método simple, ¿puedes decirme? –

+0

agregue un gesto de tap en su lugar –

1

Cree un botón invisible, colóquelo detrás del UITextField y envíe el mensaje resignFirstResponder a los campos de texto cuando se toca el botón.

+0

Y haga que el botón transparente cubra toda la vista, de modo que cualquier toque que no sea el campo de texto en la parte superior activará el botón. – hotpaw2

1

Uso delegado,

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField { 
[textField resignFirstResponder]; 
return YES; 
} 

También puede crear un método en el controlador

y luego en conexión Inspector en IB conectar Evento "puso fin al salir" a la misma.

+0

Estoy creando un método como este, pero ahora cómo llamarlo cuando se hace clic en cualquier lugar excepto mis textFields - (void) backgroundTap { \t [self.restaurant_name_textfield resignFirstResponder]; \t [self.amount_textfield resignFirstResponder]; } –

+0

my all La codificación es manual, no está basada en el Interface Builder, así que ¿cómo puedo llamar un método simplemente, puede decirme? –

0

Si no está utilizando constructor de interfaz, se puede enlazar manualmente eventos como se explica aquí: How can I programmatically link an UIView or UIImageView with an event like "touch up inside"?

Si está utilizando constructor de interfaz, entonces no es necesario para crear un botón de fondo.

Usted puede hacer esto:

  1. Seleccione su punto de vista (probablemente llamada Vista)
  2. Cambio a la (i) la ficha del inspector de propiedades
  3. cambiar la clase de UIView a uicontrol (esto da tiene acceso al evento Touch Down).
  4. Enganche el evento Touch Down a su método BackgroundToca (Ctrl + arrastre).
  5. No se olvide de guardar los cambios
0
You need to define the action for your button click this way 

[infoButton addTarget:self action:@selector(backButtonClicked) forControlEvents:UIControlEventTouchUpInside]; 


And implement the click method ,as for example i have provided the animation on button click method. 
-(void)backButtonClicked 
{ 

    [UIView beginAnimations:@"animation" context:nil]; 
    [UIView setAnimationDuration:1.5]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; 
    [self.navigationController popViewControllerAnimated:YES]; 
    [UIView commitAnimations]; 

} 


Hope this will help you ,the action is without using IB.Its all done through coding 
11

La respuesta por Ishu es una buena. Pero creo que también deberías intentarlo:

+0

Gracias, no sé por qué, pero resignFirstResponder no funcionaba para mí. Esto funciona como un regalo. – Deco

+0

@Deco ¿ha vinculado su respondedor con el IBOutlet correcto en Interface Builder? –

0

Usa esto.

- (void) animateTextField: (UITextField*) textField up: (BOOL) up 
{ 

    const int movementDistance = 180; distace of keyboard up. 

    const float movementDuration = 0.3f; 

    int movement = (up ? -movementDistance : movementDistance); 

    [UIView beginAnimations: @"anim" context: nil]; 
    [UIView setAnimationBeginsFromCurrentState: YES]; 

    [UIView setAnimationDuration: movementDuration]; 

    self.view.frame = CGRectOffset(self.view.frame, 0, movement); 

    [UIView commitAnimations]; 
} 
1

Normalmente, en este caso, tendrá una vista de desplazamiento con el resto de la interfaz de usuario. Si asigna el delegado de ese punto de vista de desplazamiento para el controlador de vista, y decir que implemente el protocolo UIScrollViewDelegate, a continuación, sólo añadir el siguiente método hará el trabajo:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    [self.view endEditing:YES]; 
} 
Cuestiones relacionadas