我一直在我的iOS应用程序中使用ti.barcode 1.9.1和钛appcelerator 3.5 除了一件事,一切都很好 取消按钮在设备上不起作用。
但是模拟效果非常好。
我正在使用Titanium Classic
在我的项目中使用模型视图控制器架构这是管理与条形码扫描仪相关的所有功能的类
//historial de productos escaneados
var scannedBarcodes = {};
var scannedBarcodesCount = 0;
//creacion de objeto Barcode
var Barcode = require('ti.barcode');
Barcode.allowRotation = true;
Barcode.displayedMessage = '';
Barcode.useLED = false;
//vista transparente que muestra lo que procesa la camara
var overlay = Ti.UI.createView({
backgroundColor: 'transparent',
top: 0, right: 0, bottom: 0, left: 0
});
//boton cancelar para cerrar la vista
var cancelButton = Ti.UI.createButton({
title: ' '+L('generales_cancelar')+' ',
color: Ti.App.COLOR_TINTE,
backgroundColor: Ti.App.COLOR_BOTON,
font: { fontWeight: 'bold', fontSize: 16 },
borderRadius: 5,
width: 120, height: 30,
bottom: 20
});
//accionador de cerrar la vista de lectura de codigos
cancelButton.addEventListener('touchend', function () {
Barcode.cancel();
});
overlay.add(cancelButton);
//funcion que manda activar el lector de codigo de barras
//parametro keepOpen en falso para cerrar y procesar lo leido una vez capturado
var callScanner = function(){
reset();
// Note: while the simulator will NOT show a camera stream in the simulator, you may still call "Barcode.capture"
// to test your barcode scanning overlay.
Barcode.capture({
animate: true,
overlay: this.overlay,
showCancel: false,
showRectangle: true,
keepOpen: false/*,
acceptedFormats: [
Barcode.FORMAT_QR_CODE
]*/
});
};
//funcion para resetear los valores del historico de objetos scaneados
var reset = function() {
scannedBarcodes = {};
scannedBarcodesCount = 0;
};
Barcode.addEventListener('error', function (e) {
});
Barcode.addEventListener('cancel', function (e) {
Ti.API.info('ejecutando cancel');
Ti.API.info('Cancel received');
});
Barcode.addEventListener('success', function (e) {
Ti.API.info('Success called with barcode: ' + e.result);
});
为了访问我项目中的条形码,我只需要使用include 在我的上方栏文件中。这是整个应用程序中存在的菜单
var iconocodigobarras_viw = Ti.UI.createView({
width:30, height:24, right:5,
backgroundImage:'../Assets/Images/Icons/icon-codigobarras.png'
});
campobusqueda_viw.add(iconocodigobarras_viw);
Ti.include("../Includes/CodigoBarras_Inc.js");
为了调用扫描器,在执行我的upperBarViewEvent时我只是调用函数调用扫描器。
iconocodigobarras_viw.addEventListener('touchend',function(){
Ti.API.info('cargando scanner');
//Ti.App.fireEvent("AbrirLibreAcceso");
callScanner();
});
像我说的那样。我使用了iPhone和iPad,它的功能非常完美。除了叠加层中的取消按钮不起作用。
有没有人遇到同样的麻烦? 提前谢谢
答案 0 :(得分:0)
示例(https://github.com/appcelerator-modules/ti.barcode/blob/master/ios/example/app.js)也有一个带按钮的叠加层。这个例子在设备上适合你吗?如果它没有,那么您发现了一个可以在JIRA(http://jira.appcelerator.org)上报告的模块错误。如果它确实有效,那么代码中就会出现错误,您应该尽可能多地注释掉它,直到它工作,然后逐步重新启用,直到找到导致它的原因。