叠加中的取消按钮不起作用ti.barcode

时间:2015-03-03 14:11:09

标签: ios titanium appcelerator barcode-scanner

我一直在我的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,它的功能非常完美。除了叠加层中的取消按钮不起作用。

有没有人遇到同样的麻烦? 提前谢谢

1 个答案:

答案 0 :(得分:0)

示例(https://github.com/appcelerator-modules/ti.barcode/blob/master/ios/example/app.js)也有一个带按钮的叠加层。这个例子在设备上适合你吗?如果它没有,那么您发现了一个可以在JIRA(http://jira.appcelerator.org)上报告的模块错误。如果它确实有效,那么代码中就会出现错误,您应该尽可能多地注释掉它,直到它工作,然后逐步重新启用,直到找到导致它的原因。