Я пишу приложение Ionic, которое будет использоваться для логистических целей в секторе здравоохранения.
Устройства, которые будут использоваться для этого приложения, имеют встроенный сканер штрих-кода и работают на Android 4.1.1.
Это сканер вводит данные в поле ввода и отправляет их нажатием клавиши «ввод». Из-за того, что сканер является моей «клавиатурой» в определенных ситуациях, я хочу скрыть клавиатуру при фокусе ввода или щелчке.
Я написал следующую директиву, используя плагин Cordova для ионной клавиатуры:
directives.directive("showKeyboard", [
function() {
var linkFn = function(scope, element, attrs) {
console.log(scope);
console.log(element);
console.log(attrs);
if(!window.cordova || !window.cordova.plugins.Keyboard) return; // Check for cordova keyboard plugin
if(element[0].nodeName.toLowerCase() != 'input') return; // check for input
if(attrs.type.toLowerCase() != 'password' && attrs.type.toLowerCase() != 'text') return; // check for type of input
element.bind("focus click",
function(e) {
e.preventDefault();
if(scope.$eval(attrs.showKeyboard)){
console.log('show')
window.cordova.plugins.Keyboard.show();
}
else {
console.log('hide');
cordova.plugins.Keyboard.close();
}
}
);
};
var keyboardDirective = {
restrict : 'A',
link: linkFn
};
return keyboardDirective;
}
]);
Функция вроде работает. Только клавиатура не закрывается и, кажется, «принудительно» открывается устройством.
какие-либо предложения?