我想用蓝牙设备强制键盘
我有一个蓝牙条码设备。 如果将蓝牙设备连接到iPhone,我无法使用iPhone键盘编写任何内容。 你已经知道iPhone键盘没有显示,因为蓝牙设备是识别键盘。
但!!! 当iphone连接蓝牙设备时,我必须通过键盘将一些东西写入文本框。
请让我知道怎么做! :)谢谢〜
即使连接了蓝牙键盘,我们也可以显示设备虚拟键盘。 我们需要使用inputAccessoryView
。
我们需要在app delegate.h中添加以下代码
@property (strong, nonatomic) UIView *inputAccessoryView;
在 – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
添加以下通知(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); }
这对我们来说很好。 我们使用隐藏文本字段从蓝牙键盘获取输入,对于所有其他文本字段,我们使用设备虚拟键盘,使用inputAccessoryView
显示。
如果这有帮助,如果您需要更多详细信息,请告诉我。
按照UIKeyInput协议创建UIView子类。
@interface SomeInputView : UIView {
并在实现文件(.m)中
-(BOOL)canBecomeFirstResponder { return YES; } -(void)insertText:(NSString *)text { //Some text entered by user } -(void)deleteBackward { //Delete key pressed }
每当你想显示键盘只是做
[myInputView becomeFirstResponder];