Je veux forcer le keyboard avec un appareil Bluetooth

J'ai un dispositif de code barres de bluetooth. Si vous connectez l'appareil Bluetooth à l'iPhone, je ne peux rien écrire en utilisant le keyboard de l'iPhone. vous savez déjà que le keyboard IPhone ne s'affiche pas, car le périphérique Bluetooth est reconnu keyboard.

Mais!!! Je dois écrire quelque chose par le keyboard dans la textbox pendant que l'iPhone se connecte avec l'appareil bluetooth.

S'il vous plaît laissez-moi savoir comment faire cela! 🙂 Merci ~

Nous pouvons afficher le keyboard virtuel de l'appareil même lorsqu'un keyboard Bluetooth est connecté. Nous devons utiliser inputAccessoryView pour cela.

Nous devons append le code ci-dessous dans l'application delegate.h

 @property (strong, nonatomic) UIView *inputAccessoryView; 

append des notifications ci-dessous dans l'application – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions méthode (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions dans delegate.m

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldBegan:) name:UITextFieldTextDidBeginEditingNotification object:nil]; 

Cela appellera la méthode ci-dessous lorsque nous nous concentrerons sur un textField .

 //This function responds to all `textFieldBegan` editing // we need to add an accessory view and use that to force the keyboards frame // this way the keyboard appears when the bluetooth keyboard is attached. -(void) textFieldBegan: (NSNotification *) theNotification { UITextField *theTextField = [theNotification object]; if (!inputAccessoryView) { inputAccessoryView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; [inputAccessoryView setBackgroundColor:[UIColor lightGrayColor]]; } theTextField.inputAccessoryView = inputAccessoryView; [self performSelector:@selector(forceKeyboard) withObject:nil afterDelay:0]; } 

et le code pour "forceKeyboard" est,

 -(void) forceKeyboard { CGRect screenRect = [[UIScreen mainScreen] bounds]; CGFloat screenWidth = screenRect.size.width; CGFloat screenHeight = screenRect.size.height; inputAccessoryView.superview.frame = CGRectMake(0, 420, screenHeight, 352); } 

Cela fonctionne bien pour nous. Nous utilisons un champ de text caché pour get des inputs du keyboard Bluetooth et pour tous les autres champs de text, nous utilisons le keyboard virtuel de périphérique qui est affiché en utilisant inputAccessoryView .

S'il vous plaît laissez-moi savoir si cela aide et si vous avez besoin de plus de détails.

Créer une sous-class UIView suivre le protocole UIKeyInput.

 @interface SomeInputView : UIView <UIKeyInput> { 

et dans le file d'implémentation (.m)

 -(BOOL)canBecomeFirstResponder { return YES; } -(void)insertText:(NSSsortingng *)text { //Some text entered by user } -(void)deleteBackward { //Delete key pressed } 

Chaque fois que vous voulez montrer le keyboard, faites-le

 [myInputView becomeFirstResponder];