J'ai téléchargé iOS 8 Gold Master pour l'iPhone et le SDK.
J'ai testé l'application et cela fonctionne bien, sauf pour une chose.
J'ai un champ de texte où un pavé numérique apparaîtra si l'utilisateur veut taper quelque chose, en plus, un bouton personnalisé est ajouté à la zone vide lorsque le clavier apparaît.
- (void)addButtonToKeyboard
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
// create custom button
UIButton * doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
doneButton.frame = CGRectMake(-2, 163, 106, 53);
doneButton.adjustsImageWhenHighlighted = NO;
[doneButton setImage:[UIImage imageNamed:@"DoneUp.png"] forState:UIControlStateNormal];
[doneButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateHighlighted];
[doneButton addTarget:self action:@selector(saveNewLead:) 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 view found; add the custom button to it
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];
}
}
}
}
Cela fonctionnait bien jusqu'à présent.
Tout d'abord, je reçois cet avertissement:
Impossible de trouver le clavier prenant en charge le type 4 pour le clavier iPhone-Portrait-NumberPad; en utilisant 3876877096_Portrait_iPhone-Simple-Pad_Default
alors ce bouton personnalisé ne s'affiche pas non plus, ce que je pense à cause de ces 2 lignes:
if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES)
et
if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
Aucune suggestion?
J'ai aussi eu ce problème après la mise à jour vers la dernière version bêta de Xcode. Les paramètres du simulateur sont actualisés, de sorte que le clavier (externe) de l'ordinateur portable a été détecté. Si vous appuyez simplement sur:
Simulateur iOS -> Matériel -> Clavier -> Connecter le clavier matériel
afin que l'entrée ne soit pas cochée, le clavier logiciel sera à nouveau affiché.
la source
L'émulateur tente de trouver un pavé numérique sur le mac, mais celui-ci n'est pas trouvé (MacBook Pro, MacBook Air et le clavier «normal / petit» n'en ont pas). Vous pouvez désélectionner l'option Connecter le clavier matériel ou simplement ignorer le message d'erreur, cela n'aura aucun effet négatif sur l'application.
la source
Allez simplement à
Cela résoudra le problème.
Votre clavier MAC ne fonctionnera pas après avoir effectué l'étape ci-dessus, vous devez utiliser le clavier du simulateur.
la source
J'utilise xcode avec ios 8, décochez simplement l'option de connexion du clavier matériel dans votre simulateur-> Matériel-> Clavier-> Connecter le clavier matériel.
Cela résoudra le problème.
la source
J'ai eu le même problème dans Xcode 8.1 et iOS 10.1. Ce qui a fonctionné pour moi était d'aller dans Simulator-> Hardware-> Keyboard et de décocher Connect Hardware Keyboard.
la source
Allez dans Simulator-> Hardware-> Keyboard et décochez Connect Hardware Keyboard.
La même chose que de nombreuses réponses ci-dessus MAIS cela n'a pas changé pour moi jusqu'à ce que je quitte et redémarre le simulateur. xcode 8.2.1 et Simulator 10.0.
la source
Exécutez l'application à l'aide du simulateur
Simulateur iOS-> Matériel-> Clavier -> iOS utilise la même disposition que OS X
Cela résoudra le problème si quelqu'un exécute son application sur son appareil
la source
J'ai reçu le même message d'erreur pour deux raisons distinctes, vous pouvez donc les ajouter à votre liste de contrôle de débogage:
Contexte: Xcode 6.4, iOS: 8.4. J'ajoutais une barre d'outils avec des
UIBarButton
s personnalisés à charger avec leUIKeyboardTypeNumberPad
(Swift :)UIKeyboardType.numberPad
, à savoir "Terminé" et "+/-". J'ai eu ce problème quand:Mon UIToolbar a été déclaré comme une propriété, mais j'avais oublié de l'allouer / l'initier explicitement.
J'avais laissé la dernière ligne,
[myCustomToolbar sizeToFit];
ce qui semble être la même famille que la réponse de Holden (mon code ici: https://stackoverflow.com/a/32016397/4898050 ).Bonne chance
la source
Dans votre application iOS, vous ne trouvez pas de pavé numérique attaché à votre OS X. Il vous suffit donc de décocher l'option de connexion du clavier matériel dans votre simulateur, dans le chemin suivant uniquement à des fins de test:
Cela résoudra le problème ci-dessus.
la source
J'ai eu le même problème en utilisant le profil d'approvisionnement de distribution. Vérifiez que vous utilisez le profil de développeur
la source
Pourquoi le code long et ne pas utiliser la UIToolbar? puisque l'avertissement persiste toujours?
UIToolbar fonctionne pour n'importe quelle version iOS, voici mon exemple de code
la source
Peut-être que vous devriez réinitialiser le cadre du bouton, j'ai aussi eu un problème, et nslog la vue du clavier comme ceci:
ios8:
avant8:
la source
OK, voici une solution simple pour obtenir le bouton `` terminé '' pour afficher et travailler dans une application à la fois sous iOS 9, iOS 8 et ci-dessous lorsque j'ai une erreur similaire. Il peut être observé après avoir exécuté une application et l'avoir visualisée via `` Afficher la hiérarchie '' (c'est-à-dire en cliquant sur l'icône `` Afficher la hiérarchie '' dans la barre de la zone de débogage pendant que l'application s'exécute sur l' appareil et en inspectant vos vues dans Storyboard), que le clavier est présenté sur différentes fenêtres dans iOS 9 par rapport à iOS 8 et versions inférieures et doivent être prises en compte. addButtonToKeyboard
Et voici comment vous pouvez supprimerKeyboardButton du clavier si vous le souhaitez.
la source