Bluetooth バーコード デバイスがあります。Bluetooth デバイスを iPhone に接続すると、iPhone キーボードを使用して何も書き込めなくなります。Bluetooth デバイスがキーボードとして認識されているため、iPhone キーボードが表示されないことは既にご存じでしょう。
しかし!!!iPhoneがBluetoothデバイスに接続している間、キーボードでテキストボックスに何かを書き込む必要があります。
その方法を教えてください!:)ありがとう〜
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
ます。
これが役立つかどうか、さらに詳細が必要な場合はお知らせください。
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];