2013-10-17 6 views
10

Ich habe ein Bluetooth-Barcode-Gerät. Wenn Sie das Bluetooth-Gerät mit dem iPhone verbinden, kann ich mit der iPhone-Tastatur nichts schreiben. Sie wissen bereits, dass IPhone-Tastatur nicht angezeigt wird, weil das Bluetooth-Gerät Tastatur erkannt wird.Ich möchte die Tastatur mit Bluetooth-Gerät erzwingen

Aber !!! Ich muss etwas per Tastatur in die Textbox schreiben, während iPhone mit dem Bluetooth-Gerät verbunden ist.

Bitte lassen Sie mich wissen, wie das geht! :) Danke ~

+0

Sie eine Lösung gefunden? Selbes Problem hier! – kokemomuke

Antwort

12

Wir können Gerät virtuelle Tastatur auch wenn eine Bluetooth-Tastatur angeschlossen ist. Wir müssen inputAccessoryView dafür verwenden.

Wir brauchen unterhalb Code in App delegate.h

@property (strong, nonatomic) UIView *inputAccessoryView; 

hinzufügen unter Benachrichtigungen in hinzufügen - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions Methode in delegate.m

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

Dies ruft unten Methode, wenn wir konzentrieren auf einem 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]; 
} 

und der Code für "forceKeyboard" ist,

-(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); 

} 

Dies funktioniert für uns in Ordnung. Wir verwenden ein verstecktes Textfeld, um Eingaben von der Bluetooth-Tastatur zu erhalten, und für alle anderen Textfelder verwenden wir die Geräte-virtuelle Tastatur, die unter Verwendung von inputAccessoryView angezeigt wird.

Bitte lassen Sie mich wissen, wenn dies hilft und wenn Sie weitere Informationen benötigen.

+4

Leider funktioniert dies nicht auf IOS8 – fabrizotus

+3

dies funktioniert nicht auf iOS8 & 9, gibt es eine alternative Lösung? – Sanju

+0

Hat jemand eine Lösung gefunden? –

0

Erstellen Sie eine UIView-Unterklasse, folgen Sie dem UIKeyInput-Protokoll.

@interface SomeInputView : UIView <UIKeyInput> { 

und in Implementierungsdatei (.m)

-(BOOL)canBecomeFirstResponder { 
    return YES; 
} 

-(void)insertText:(NSString *)text { 
    //Some text entered by user 
} 

-(void)deleteBackward { 
    //Delete key pressed 
} 

Wenn Sie Keyboard zeigen wollen nur tun

Verwandte Themen