iOS 蓝牙扫描枪功能

news/2025/1/11 19:56:51/

前面有一篇有关蓝牙扫描枪实现原理的笔记 iOS 蓝牙扫描枪
这里用UITextField这个控件来实现蓝牙扫描的功能

注意

这篇有问题,并非所有的扫码枪扫描结果最后都会携带 /n ,所以使用- (BOOL)textFieldShouldReturn:(UITextField *)textField 来监听扫描结果是有疏漏的,建议在实时输入回调的监听里做延迟接收扫描结果,然后处理。

话不多说,直接上代码

#import "ViewController.h"@interface ViewController ()<UITextFieldDelegate>@property (nonatomic, strong) UITextField *scanerTextField;@end@implementation ViewController- (UITextField *)scanerTextField {if (!_scanerTextField) {_scanerTextField = [[UITextField alloc] init];_scanerTextField.delegate = self;_scanerTextField.spellCheckingType = UITextSpellCheckingTypeNo;_scanerTextField.autocorrectionType = UITextAutocorrectionTypeNo;// > iOS 9.0,隐藏键盘工具栏#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 9.0) {_scanerTextField.inputAssistantItem.leadingBarButtonGroups = @[];_scanerTextField.inputAssistantItem.trailingBarButtonGroups = @[];}#endif}return _scanerTextField;
}- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.//self.scanerTextField.frame = CGRectZero;      // 可设置frame为(0,0,0,0)[self.scanerTextField becomeFirstResponder];    // 设置成第一响应中,才会接收外接设备的输入[self.view addSubview:self.scanerTextField];    // 如果不添加到试图层的话,不会相应外接的输入
}#pragma mark - UITextFieldDelegate// 蓝牙扫描结果会通过此方法回调
- (BOOL)textFieldShouldReturn:(UITextField *)textField {NSLog(@"%@",textField.text);return YES;
}@end

思路很简单,就是使用UITextField这个控件来接收外接输入,蓝牙扫描枪相当于一个外接键盘。

之所以使用UITextField而不使用UITextView的原因时,使用UITextView的话,当iPad外接键盘和蓝牙扫码枪同时使用时,会有冲突,为了避免冲突使用UITextField,在- textFieldShouldReturn: 这个回调里处理扫描结果。

  • 关于系统键盘

有时候使用蓝牙扫描枪的时候,需要隐藏系统键盘,只是不显示系统键盘,可以做如下处理

 UIView *inputView = [[UIView alloc] initWithFrame:CGRectZero];_scanerTextField.inputView = inputView;

这样当激活 scanerTextField 成为第一响应者时,就不会弹出键盘了。

代码如下:

- (UITextField *)scanerTextField {if (!_scanerTextField) {_scanerTextField = [[UITextField alloc] init];_scanerTextField.delegate = self;_scanerTextField.spellCheckingType = UITextSpellCheckingTypeNo;_scanerTextField.autocorrectionType = UITextAutocorrectionTypeNo;// > iOS 9.0,隐藏键盘工具栏#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 9.0) {_scanerTextField.inputAssistantItem.leadingBarButtonGroups = @[];_scanerTextField.inputAssistantItem.trailingBarButtonGroups = @[];}#endif// 不显示系统键盘UIView *inputView = [[UIView alloc] initWithFrame:CGRectZero];_scanerTextField.inputView = inputView;[inputView release];}return _scanerTextField;
}- (BOOL)textFieldShouldReturn:(UITextField *)textField {if (textField.text && textField.text.length) {// 处理扫描事件...}return YES;
}- (void)textFieldDidEndEditing:(UITextField *)textField {[NSObject cancelPreviousPerformRequestsWithTarget:self];[self performSelector:@selector(setScannerKeyboardEditable) withObject:nil afterDelay:0.8];
}- (void)setScannerKeyboardEditable {if (_scanerEnable) {self.scanerTextField.enabled = YES;if (self.scanerTextField != nil && [self.scanerTextField canBecomeFirstResponder] && ![self.scanerTextField isFirstResponder]) {[self.scanerTextField becomeFirstResponder];}}else {self.scanerTextField.enabled = NO;}
}

目前测试并没发现什么其他问题。


http://www.ppmy.cn/news/314882.html

相关文章

无线扫码枪 服务器查询异常,无线扫描枪常见问题及解决方法

无线扫描枪常见问题及解决方法 来源&#xff1a;本站 | 作者:admin | 发表于&#xff1a;2015-08-31 | 浏览次数&#xff1a;2395 使用无线扫描枪的用户&#xff0c;有时候会碰到扫描枪突然出现的一些问题&#xff0c;不知如何解决。今天编者带大家来了解下&#xff0c;无线扫…

windows下扫描枪扫描丢码

丢码与中文输入发有关&#xff0c;在英文输入法下不好出现丢码

iOS 蓝牙扫描枪

iOS 蓝牙扫描枪 1. 实现原理 通过蓝牙连接手机和扫描枪&#xff0c;相当于给手机添加了一个外接键盘&#xff0c;当连接扫描枪后&#xff0c;手机内的键盘不会弹出来。 可以通过textField的代理可以监听到扫描过程和扫描结果。 扫描时候相当于外接键盘在输入&#xff0c;通过…

USB扫描枪设置流程 扫描枪使用

第一步&#xff1a;安装驱动 将光盘放到光驱中&#xff0c;打开后找到SymbolCOMPortEmulationDriverv1.8.5.zip压缩包&#xff0c;减压后点击安装。压缩包如下如图所示&#xff1a; 第二步&#xff1a;设置扫描枪 1&#xff1a;将扫描枪安装在工控机上。 扫描枪为USB口&#…

无线扫码枪 服务器查询异常,扫描枪常见问题

扫描枪常见问题 1&#xff0e;为什么将扫描枪连接到电脑后没有任何反映? 答&#xff1a;将扫描枪连接到电脑后&#xff0c;是否有启动声音&#xff0c;如果没有启动声音&#xff0c;请检查一下您所用的连接线是否正常&#xff0c;电脑是否正常。如果连接线确认正常&#xff0c…

手机版无线扫描枪

手机版无线扫码枪 无线条码扫描枪电脑端是一款专门用作无线扫描条码枪专门配用的软件。用户下载该软件之后&#xff0c;电脑连接网络&#xff0c;在开启软件和扫描枪&#xff0c;扫描条码就会发送到电脑的光标&#xff0c;现在手机也可以同样功能&#xff0c;而且是免费的&…

GreenPlum版本升级

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

英语语态--主动和被动

文章目录 被动语态的结构被动语态的用法主动语态和被动语态的转换被动语态总结 被动&#xff1a;主语是谓语的承受者 什么是语态 I clean the room. The room is cleaned&#xff08;谓语&#xff09; by me. 被动语态的结构 The room is cleaned by me. be 动词过去分词&am…