123 votes

Comment par programmation à vérifier si un clavier est présent dans l'application iphone?

J'ai besoin de vérifier l'état du clavier visibilité dans mon iPhone.

comme:

if(keyboardIsPresentOnWindow) {
    //Do action 1
}
else if (keyboardIsNotPresentOnWindow) {
    //Do action 2
}

Donc, s'il vous plaît aider. Comment puis-je vérifier cette condition?

72voto

thpitsch Points 431

...ou prendre la voie facile:

Lorsque vous entrez dans un champ de texte, il devient premier intervenant et le clavier s'affiche. Vous pouvez vérifier l'état du clavier, avec [myTextField isFirstResponder]. Si elle renvoie YES, alors que le clavier est actif.

63voto

rpetrich Points 25769

drawnonward code est très proche, mais entre en collision avec UIKit de l'espace de noms et pourrait être plus facile à utiliser.

@interface KeyboardStateListener : NSObject {
    BOOL _isVisible;
}
+ (KeyboardStateListener *)sharedInstance;
@property (nonatomic, readonly, getter=isVisible) BOOL visible;
@end

static KeyboardStateListener *sharedInstance;

@implementation KeyboardStateListener

+ (KeyboardStateListener *)sharedInstance
{
    return sharedInstance;
}

+ (void)load
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    sharedInstance = [[self alloc] init];
    [pool release];
}

- (BOOL)isVisible
{
    return _isVisible;
}

- (void)didShow
{
    _isVisible = YES;
}

- (void)didHide
{
    _isVisible = NO;
}

- (id)init
{
    if ((self = [super init])) {
        NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
        [center addObserver:self selector:@selector(didShow) name:UIKeyboardDidShowNotification object:nil];
        [center addObserver:self selector:@selector(didHide) name:UIKeyboardWillHideNotification object:nil];
    }
    return self;
}

@end

31voto

beggs Points 3320

Je pense que vous avez besoin pour utiliser les notifications qui sont fournis sur le clavier:

De: http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITextField_Class/Reference/UITextField.html

Clavier Notifications

Lorsque le système affiche ou masque la clavier, il publie plusieurs clavier les notifications. Ces notifications contiennent des informations sur la clavier, y compris sa taille, qui vous pouvez l'utiliser pour les calculs impliquant le déplacement de point de vue. L'inscription pour ces notifications est la seule façon de obtenir certains types de renseignements sur le clavier. Le système fournit le notifications suivantes pour clavier événements liés à:

* UIKeyboardWillShowNotification
* UIKeyboardDidShowNotification
* UIKeyboardWillHideNotification
* UIKeyboardDidHideNotification

Pour plus d'informations sur ces les notifications, voir leur description dans UIWindow Classe de Référence. Pour informations sur la façon d'afficher et de masquer le clavier, voir le Texte et Web.

5voto

malex Points 2992

Essayez cette solution:

- (BOOL) isKeyboardOnScreen 
{
    BOOL isKeyboardShown = NO;

    NSArray *windows = [UIApplication sharedApplication].windows;
    if (windows.count > 1) {
        NSArray *wSubviews =  [windows[1]  subviews];
        if (wSubviews.count) {
            CGRect keyboardFrame = [wSubviews[0] frame];
            CGRect screenFrame = [windows[1] frame];
            if (keyboardFrame.origin.y+keyboardFrame.size.height == screenFrame.size.height) {
                isKeyboardShown = YES;
            }
        }
    }

    return isKeyboardShown;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X