11

Bluetooth バーコード デバイスがあります。Bluetooth デバイスを iPhone に接続すると、iPhone キーボードを使用して何も書き込めなくなります。Bluetooth デバイスがキーボードとして認識されているため、iPhone キーボードが表示されないことは既にご存じでしょう。

しかし!!!iPhoneがBluetoothデバイスに接続している間、キーボードでテキストボックスに何かを書き込む必要があります。

その方法を教えてください!:)ありがとう〜

4

2 に答える 2

13

Bluetooth キーボードが接続されている場合でも、デバイスの仮想キーボードを表示できます。そのために使用する必要がありますinputAccessoryView

アプリの delegate.h に以下のコードを追加する必要があります

@property (strong, nonatomic) UIView *inputAccessoryView;

以下の通知を追加 - delegate.m(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsのメソッド

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

にフォーカスすると、以下のメソッドが呼び出されます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];
}

「forceKeyboard」のコードは、

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

}

これは私たちにとってはうまくいきます。Bluetooth キーボードから入力を取得するために非表示のテキスト フィールドを使用し、他のすべてのテキスト フィールドには、 を使用して表示されるデバイスの仮想キーボードを使用しinputAccessoryViewます。

これが役立つかどうか、さらに詳細が必要な場合はお知らせください。

于 2013-12-17T18:50:37.020 に答える
0

UIKeyInput プロトコルに従って UIView サブクラスを作成します。

@interface SomeInputView : UIView <UIKeyInput> {

および実装ファイル (.m)

-(BOOL)canBecomeFirstResponder {
    return YES;
}

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

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

キーボードを表示したいときはいつでも

[myInputView becomeFirstResponder];
于 2016-04-18T05:46:54.260 に答える