2010-12-09 38 views
0

Je ne peux vraiment pas comprendre pourquoi Apple ne mettrait pas le bouton DONE dans le clavier NumberPad.Quand ce problème de clavier NumberPad va-t-il être résolu? - AIDEZ-MOI!

Certaines solutions étaient disponibles, mais la mise à niveau 4.2 les a désactivées.

Je suis à la recherche d'une solution au problème de 4.2. Aussi, si possible pour un answer sur s'il est possible de créer un open source, facile à intégrer, solution pour que je puisse faire \ do et publier.

Aussi, je voudrais savoir comment puis-je diminuer la fermeture du clavier si l'entrée est incorrecte (qui est une solution laide possible pour le problème - faire en sorte qu'aucun caractère ilegal entrées)

Merci.

+0

Cette solution ne fonctionne-t-elle pas avec 4.2? http://www.neoos.ch/news/46-development/54-uikeyboardtypenumberpad-and-the-missing-return-key C'est mauvais, puisque je viens d'utiliser cette solution moi-même ... – Mikael

Répondre

1

Bien qu'il semble que les solutions qui fonctionnaient avant iOS 4.2 ne fonctionnent plus, la solution que j'utilise ajoute un bouton à l'UIWindow en observant le UIKeyboardWillAppearNotification. Après un petit délai, je me fane rapidement dans le bouton. Pas idéal mais ça n'a pas l'air terrible.

J'observe également UIKeyboardWillHideNotification. Ici, le fondu sortant serait disgracieux car il s'effacerait pendant que le clavier glisse en dessous. Pour donner l'illusion que le clavier et rejeter le bouton licencient ensemble, je glisse sur le bouton rejeter légèrement tout en Affaiblissement:

_keyboardDisappearanceObserver = [[NOTIFIER addObserverForName:UIKeyboardWillHideNotification object:nil queue:nil usingBlock:^(NSNotification *note) { 
     [UIView animateWithDuration:0.1 
         animations:^(void) { 
          _dismissButton.alpha = 0.0; 
          CGRect buttonFrame = _dismissButton.frame; 
          buttonFrame.origin.y += 25; 
          _dismissButton.frame = buttonFrame; 
         } 
         completion:^(BOOL finished) { 
          [_dismissButton removeFromSuperview]; 
          CGRect buttonFrame = _dismissButton.frame; 
          buttonFrame.origin.y -= 25; 
          _dismissButton.frame = buttonFrame; 
         }]; 
    }] retain]; 

Peut-être une solution similaire fonctionnerait pour l'apparence du clavier.

Par ailleurs, je trouve les boutons à destituer: UIControlStateNormal button et UIControlStateHighlighted button

0

C'est pas ma solution, je l'ai trouvé sur un d'un certain nombre de messages de blog après la pêche au chalut. Fonctionne sur iOS 5.0

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(keyboardDidShow:) 
               name:UIKeyboardDidShowNotification 
               object:nil]; 
} 

- (void)keyboardDidShow:(NSNotification *)note { 
    [self addDoneButtonToKeyboard]; 
} 

-(void)addDoneButtonToKeyboard { 
     UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
     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(resignTextView:) forControlEvents:UIControlEventTouchUpInside]; 

     UIWindow* keyboardView = [[[UIApplication sharedApplication] windows] objectAtIndex:1]; 
     [self insertDoneKey:keyboardView button:doneButton]; 
} 

- (void)insertDoneKey:(UIView*)view button:(UIButton*) button { 
     int keyIndex = 0; 
     for (UIView* subview in view.subviews) { 
      if([[subview description] rangeOfString:@"UIKBKeyView"].location!=NSNotFound) { 
       // NSLog(@"Found Keyboard KeyIndex:%d descr: %@",keyIndex,[subview description]); 
       if (keyIndex==9) { 
        // NSLog(@"Returning bottom left key view"); 
        button.frame=CGRectMake(0, 0, subview.frame.size.width, subview.frame.size.height); 
        button.bounds=CGRectMake(0, 0, subview.frame.size.width, subview.frame.size.height); 
        [subview setUserInteractionEnabled:YES]; 
        [subview addSubview:button]; 
        [subview bringSubviewToFront:button]; 
       } 
       keyIndex++; 
      } 
      [self insertDoneKey:subview button:button]; 
     } 
}