2009-09-10 9 views
0

Comment puis-je disparais clavier numérique dans l'iPhone car il n'y a pas de clé de retour, ce qui implique qu'il ne va pas répondre àDisapperiang IPhone numérique Clavier

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
+0

en double de: - - - - - - - - Et c'était juste sur la première page des résultats de recherche ... –

+1

Je crains que vous ne vous trompiez car ils parlent tous de quand le clavier n'est pas de type numérique, Je sais comment désactiver le clavier quand ce n'est pas numérique, son cas différent, quand vous devez disparaître "Clavier NUMERIC". Et je recherche avant de poser cette question. – itsaboutcode

+0

Vous pouvez facilement mettre un bouton sur votre écran pour fermer le clavier une fois que l'utilisateur a entré le numéro. N'est-ce pas ainsi que fonctionne l'application téléphone? Ou vous pouvez mettre une barre d'outils au-dessus du clavier avec un bouton "don", ou un certain nombre de choses (rejeter automatiquement le clavier après x secondes d'inactivité, une fois le texte validé dans le champ, etc etc) –

Répondre

0

Essayez ceci:

[theTextField resignFirstResponder]; 
+0

Eh bien, vous le faites dans la fonction que j'ai écrit ci-dessus, comme ça. De toute façon où je devrais mettre ce code au travail? – itsaboutcode

+0

J'ai beaucoup de champs de texte à mon avis et aussi son ne fonctionne pas pour le clavier numérique –

2

est ici la réponse ..

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

{ 

    //[URL resignFirstResponder]; 

    //[Password resignFirstResponder]; 

    [speedField resignFirstResponder]; 

    [super touchesBegan:touches withEvent:event ]; 

} 
+0

ne fonctionne pas lorsque j'ai sous-vues dans une vue –

-2

ici vous allez. Étendez votre classe UIViewController avec ceci. Mais comment savons-nous que c'est le bouton fait? Adding Done Button to Only Number Pad Keyboard on iPhone

// 
// UIViewController+NumPadReturn.m 
// iGenerateRandomNumbers 
// 
// Created by on 12/4/10. 
// Copyright 2010 __MyCompanyName__. All rights reserved. 
// 

#import "UIViewController+NumPadReturn.h" 


@implementation UIViewController (NumPadReturn) 

-(void) viewDidLoad{ 
    // add observer for the respective notifications (depending on the os version) 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2) { 
     [[NSNotificationCenter defaultCenter] addObserver:self 
               selector:@selector(keyboardDidShow:) 
                name:UIKeyboardDidShowNotification 
                object:nil];  
    } else { 
     [[NSNotificationCenter defaultCenter] addObserver:self 
               selector:@selector(keyboardWillShow:) 
                name:UIKeyboardWillShowNotification 
                object:nil]; 
    } 

} 


- (void)keyboardWillShow:(NSNotification *)note { 
    // if clause is just an additional precaution, you could also dismiss it 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] < 3.2) { 
     [self addButtonToKeyboard]; 
    } 
} 

- (void)keyboardDidShow:(NSNotification *)note { 
    // if clause is just an additional precaution, you could also dismiss it 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2) { 
     [self addButtonToKeyboard]; 
    } 
} 

- (void)addButtonToKeyboard { 
    // create custom button 
    UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    doneButton.frame = CGRectMake(0, 163, 106, 53); 
    doneButton.adjustsImageWhenHighlighted = NO; 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.0) { 
     [doneButton setImage:[UIImage imageNamed:@"DoneUp3.png"] forState:UIControlStateNormal]; 
     [doneButton setImage:[UIImage imageNamed:@"DoneDown3.png"] forState:UIControlStateHighlighted]; 
    } else {   
     [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]; 
    UIView* keyboard; 
    for(int i=0; i<[tempWindow.subviews count]; i++) { 
     keyboard = [tempWindow.subviews objectAtIndex:i]; 

     // keyboard found, add the button 
     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2) { 
      if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES) 
       [keyboard addSubview:doneButton]; 
     } else { 
      if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) 
       [keyboard addSubview:doneButton]; 
     } 
    } 


} 

- (void)doneButton:(id)sender { 
    NSLog(@"doneButton"); 
    [self.view endEditing:TRUE]; 
} 
+1

-1 c'est un hack total et ne doit pas être utilisé. Que se passe-t-il si Apple décide de changer le nom de "UIKeyboard" en "UIKBView?" Vous ne devriez jamais compter sur un comportement non documenté ou des détails d'implémentation pour que votre code fonctionne correctement.Si vous avez besoin d'un comportement qui n'est pas possible sans documents non documentés, envoyez un bogue. –

0

Pourquoi ne pas utiliser « Nombres et Ponctuation » clavier au lieu de « numérique »? Il permettra d'économiser votre temps

3

Utilisez resignFirstResponder dans touchesBegan, comme ceci:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch * touch = [touches anyObject]; 
    if(touch.phase == UITouchPhaseBegan) { 
     [self.myTextField resignFirstResponder]; 
    } 
} 

Vous devrez peut-être appeler cela sur les champs de texte multiples si vous n'êtes pas sûr où l'accent est actuellement situé; Je n'ai pas testé ce cas.

De plus, dans Interface Builder, vous devez activer l'option "Interaction utilisateur activé" case à cocher pour la vue, ou programatically:

myView.userInteractionEnabled = YES; 
Questions connexes