Forcer l'application à utiliser Apple Keyboard dans iOS 8

Comment puis-je get les champs UITextfield de mon application pour utiliser uniquement le keyboard Apple dans iOS 8? Je ne veux pas autoriser les keyboards de tiers, point. Je comprends qu'il peut être une mauvaise expérience user, alors s'il vous plaît ne pas discuter de ce point avec moi 🙂

Je sais que je peux définir la propriété securedEntry sur true pour forcer le keyboard Apple ( http://www.imore.com/custom-keyboards-ios-8-explained ). Peut-être iOS 8 va me laisser définir cette propriété et ne pas masquer le text?

En définissant la propriété UITextView ou UITextField de Secure Text Entry sur YES , les keyboards personnalisés ne seront pas affichés par défaut et ne peuvent pas non plus être basculés vers.

Malheureusement, cela masquera également les informations sur les touches ainsi que le chevauchement et la désactivation des limites automatiques et des suggestions de correction et d'orthographe automatiques. Donc, vous devez basculer est de return à NO après que vous avez forcée obligeant l'user à utiliser le keyboard Apple.

Activer et désactiver cette propriété peut forcer le keyboard Apple à être la première key affichée par défaut.


MAINTENANT, l'user pourra toujours appuyer sur la touche globale pour avoir deux options:

• Un, vous pouvez simplement les laisser et détecter s'ils utilisent [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(inputModeDidChange:) name:@"UITextInputCurrentInputModeDidChangeNotification" object:nil]; Il suffit de relouer le code secureTextEntry ci-dessus et de forcer le return au keyboard par défaut d'Apple (méthode non professionnelle, mais très facile à programmer). (* Remarque: Cela empêchera également les users d'utiliser le keyboard de dictée (en cliquant sur le button icône de microphone à côté de la barre d'espace), sauf si vous utilisez un code non documenté pour détecter s'il est dicté ou non. Validation Apple sur quelques counts, vous findez des informations à ce sujet ici )

Ou

• Deux: pour utiliser UIWindows pour get ONTOP du keyboard par défaut et append une UIWindow avec userInteractionEnabled définie sur YES couvrant où cette key est l'location (cela prendra quelques instructions conditionnelles pour s'assurer que vous couvrez le droit "changer la touche du keyboard" pour chaque possibilité. (ie keyboard paysage iPhone4, keyboard portrait iPhone5, etc).

Voici un peu de code de démo qui fonctionne pour les keyboards portrait (iphone5 et iphone4)


viewController.h

 #import <UIKit/UIKit.h> @interface ViewController : UIViewController <UITextFieldDelegate> { UITextField *theTextField; UIWindow *statusWindow; } @end 

viewController.m

 #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. theTextField = [[UITextField alloc] initWithFrame:CGRectMake(50, 50, 50, 250)]; [theTextField becomeFirstResponder]; theTextField.secureTextEntry = YES;//turn back OFF later (like in `viewDidAppear`) and reset textField properties to YES (like auto correct, auto caps, etc). theTextField.delegate = self; [self.view addSubview:theTextField]; //UIWindow *statusWindow; MUST be defined in .h file! statusWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; statusWindow.frame = CGRectMake(37, self.view.frame.size.height-47, 45, 45); statusWindow.windowLevel = UIWindowLevelStatusBar; statusWindow.hidden = NO; statusWindow.backgroundColor = [UIColor clearColor]; UIButton *keyboardCover = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 45, 45)]; keyboardCover.backgroundColor = [UIColor redColor]; [statusWindow addSubview:keyboardCover]; //statusWindow.alpha = 1.00; statusWindow.userInteractionEnabled = YES; [statusWindow makeKeyAndVisible]; } -(void)viewDidAppear:(BOOL)animated { [theTextField resignFirstResponder]; theTextField.secureTextEntry = NO; theTextField.autocorrectionType = 2;//ON theTextField.autocapitalizationType = 2;//ON theTextField.spellCheckingType = 2;//ON [theTextField becomeFirstResponder]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 


Voici un exemple de ce que ce code va ressembler … J'utilisais un keyboard personnalisé, quand j'ai lancé l'application, il m'a forcé à aller sur le keyboard Apple, puis a mis un carré rouge sur le button "Changer le keyboard", qui a fait impossible pour moi de cliquer sur le button pour changer le keyboard. (Le carré rouge peut être changé pour être quelque chose comme une key vide ou l'icône globe dans un état fané (désactivé).)

entrez la description de l'image ici

Apple fournit une API pour cela exactement. Mettez ceci dans votre AppDelegate

 - (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(NSSsortingng *)extensionPointIdentifier { if ([extensionPointIdentifier isEqualToSsortingng:@"com.apple.keyboard-service"]) { return NO; } return YES; } 

C'est la façon la plus propre et documentée de le faire 🙂

Au meilleur de ma connaissance, il n'y a aucun moyen de le faire. Cependant, si vous êtes prêt à faire l'effort, vous pouvez créer votre propre vue d'input personnalisée qui imite le keyboard Apple standard, et l'utiliser à la place. Pour plus d'informations sur les vues d'input, reportez-vous à la documentation .