2011-04-29 22 views
9

Soy nuevo en la tecnología de iPhone. He guardado un problema en una aplicación de iPhone, pero cuando uso el teclado numérico del teclado del campo de texto, el teclado no muestra un botón de retorno/hecho.teclado del teclado numérico no muestra la tecla de retorno en el iphone

¿Cómo puedo ocultar el teclado numérico después de ingresar el número en el campo de texto? ¿Tienes alguna solución para eso? Por favor, brinde ayuda.

Respuesta

11

Puede hacerlo de esta manera:

@property (nonatomic, strong) UITextField *textField; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 100, 40)]; 
    UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonDidPressed:)]; 
    UIBarButtonItem *flexableItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:NULL]; 
    UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, [[self class] toobarHeight])]; 
    [toolbar setItems:[NSArray arrayWithObjects:flexableItem,doneItem, nil]]; 
    self.textField.inputAccessoryView = toolbar; 
} 

- (void)doneButtonDidPressed:(id)sender { 
    [self.textField resignFirstResponder]; 
} 

+ (CGFloat)toolbarHeight { 
    // This method will handle the case that the height of toolbar may change in future iOS. 
    return 44.f; 
} 
+2

Para iOS 6.1, esto no funcionó a menos que haya inicializado la barra de herramientas con un marco como el siguiente: 'UIToolbar * toolbar = [[UIToolbar alloc] initWithFrame: CGRectMake (0, 0, self.view.bounds.size.width, 44)]; De lo contrario, respuesta perfecta – Segfault

+0

@Segfault Confirmando eso. Necesita especificar un marco para que esto funcione correctamente en 6.1. – Paul

+0

Gracias Segfault, lo editaré. – Oscar

1

No hay una tecla de devolución o finalizada en el teclado numérico. Puede hacer una cosa cuando el usuario toca fuera del campo de texto y puede ocultar el teclado. Usted debe hacer algo como esto -

if (there is a touch outside of your textField) 
{ 

    [textField resignFirstResponder]; 

} 
+0

pero quiero crear un botón hecho en el teclado numérico, así que cómo crear este botón hecho en el teclado numérico. si es posible, entonces ayúdame. – jaydev

+0

lo siento, pero eso no es posible con iPhone sdk con el uso de API privadas 'tiene que ir con algunas soluciones alternativas, puede crear su propio teclado con el botón hecho en él .. – Saurabh

6

debe utilizar UIKeyboardTypeNumberPad, probar este lugar UIKeyboardTypeNumbersAndPunctuation, No solo se mostrará la tecla de retorno, pero también le proporcionará algunos signos de puntuación adicionales

0

Esta pregunta tiene Ya he recibido una respuesta, lo sé porque así es como obtuve la solución. Tiene 2 opciones, la primera es ocultar el teclado implementando un toque en la vista principal que enviará el mensaje de "finalización de la edición". que oculta el teclado [self.view endEditing: YES];

Si agrega el oyente táctil a la vista principal, debe implementar una condición para que los demás botones sigan funcionando.

Lo que quiere hacer para simular una tecla de retorno es añadir realmente así:

Registro para un teclado sí mostró notificación y agregar esto al código:

if ([self.passCodeLabel isFirstResponder]) 
     { 
      UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
      doneButton.frame = CGRectMake(0, 163, 106, 53); 
      //doneButton.frame = CGRectMake(0, 163, 257, 257); 
      doneButton.adjustsImageWhenHighlighted = NO; 
      [doneButton setImage:[UIImage imageNamed:@"doneup.png"] forState:UIControlStateNormal]; 
      [doneButton setImage:[UIImage imageNamed:@"donedown.png"] forState:UIControlStateHighlighted]; 
      [doneButton addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside]; 

      // locate keyboard view 
      UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1]; 
      NSLog(@"%@",[[UIApplication sharedApplication] windows]); 

      UIView* keyboard; 
      NSLog(@"Shared applicaiton windows count:%i",tempWindow.subviews.count); 
      for(int i=0; i<[tempWindow.subviews count]; i++) { 
       keyboard = [tempWindow.subviews objectAtIndex:i]; 
       NSLog(@"%@",[keyboard description]); 
       // keyboard view found; add the custom button to it 
       if([[keyboard description] hasPrefix:@"<UIPeripheralHostView"] == YES) 
       { 
        NSLog(@"Adding return button"); 
        [keyboard addSubview:doneButton]; 
       } 
      } 
     } 

Esta voluntad agregue su propia imagen de botón "hecho" al teclado (que puede copiar haciendo una captura de pantalla de la ranura en blanco y agregando el texto hecho).

Por cierto, el código que pegué funciona en mi diseño. Para el tuyo, quizás debas modificarlo un poco, pero el principio es el mismo.

  • Crear el botón

  • Busca la subvista teclado

  • Añadir el botón para que subvista

0
- (void)viewDidLoad 
{ 

    [super viewDidLoad]; 
    UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)]; 
    numberToolbar.barStyle = UIBarStyleBlackTranslucent; 
    numberToolbar.items = [NSArray arrayWithObjects: 
          [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], 
          [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)], 
          nil]; 
    [numberToolbar sizeToFit]; 

    _txt_mobileno.inputAccessoryView = numberToolbar; 

} 

-(void)doneWithNumberPad 
{ 
    [_txt_mobileno resignFirstResponder]; 

} 
Cuestiones relacionadas