离子 Android 电视
Ionic Android TV
我正在 Ionic 上为 Android TV 做 APK,我对箭头的控制有问题。
设备的 APK 运行 但他的行为不正确。当使用箭头移动应用程序时,焦点不起作用。它会跳转一些 div。
这里是这个应用程序使用的一些代码:
TS:
matrixNodes: Array<any> = [];
matrixPosX: number = 0;
matrixPosY: number = 0;
。
.
.
keyboardAction(e) {
let activeEle: any = this.matrixNodes[this.matrixPosY][this.matrixPosX];
let parent: any = activeEle.parentNode;
let moveRight = -224;
let moveLeft = +224;
if (this.matrixPosY != 0) {
moveRight = -340;
moveLeft = +340;
}
if (e.key == "ArrowRight") {
if (this.matrixPosX < (this.matrixNodes[this.matrixPosY].length - 1)) {
this.matrixPosX++;
this.matrixNodes[this.matrixPosY][this.matrixPosX].focus();
//SCROLL
if (parent.style.left == 0 + 'px' || parent.style.left == 0) {
if(this.matrixPosY != 0){
console.log(this.matrixPosY)
parent.style.left = '-350px';
}else
parent.style.left = '-240px';
} else {
let old = parent.style.left;
old = old.replace("px", "");
parent.style.left = (moveRight + parseInt(old)) + "px";
}
////////////////
}
} else if (e.key == "ArrowLeft") {
if (this.matrixPosX > 0) {
this.matrixPosX--;
this.matrixNodes[this.matrixPosY][this.matrixPosX].focus();
//SCROLL
if (parent.style.left == 0 + 'px' || parent.style.left == 0) {
if(this.matrixPosY != 0)
parent.style.left = '350px';
else
parent.style.left = '238px';
} else {
let old = parent.style.left;
old = old.replace("px", "");
parent.style.left = (moveLeft + parseInt(old)) + "px";
}
/////////////////////////////
} else {
//Moverse al TAB
let tab = document.getElementById("tab-button-home");
tab.focus();
}
此函数 (keyboardAction) 是通过事件 keydown 调用的。
我想知道为什么跳一些 div.. 如果是因为在 HTML
处使用了其他事件或其他元素
当 1 行代码就是解决方案时...
e.preventDefault()
我正在 Ionic 上为 Android TV 做 APK,我对箭头的控制有问题。
设备的 APK 运行 但他的行为不正确。当使用箭头移动应用程序时,焦点不起作用。它会跳转一些 div。
这里是这个应用程序使用的一些代码:
TS:
matrixNodes: Array<any> = [];
matrixPosX: number = 0;
matrixPosY: number = 0;
。 . .
keyboardAction(e) {
let activeEle: any = this.matrixNodes[this.matrixPosY][this.matrixPosX];
let parent: any = activeEle.parentNode;
let moveRight = -224;
let moveLeft = +224;
if (this.matrixPosY != 0) {
moveRight = -340;
moveLeft = +340;
}
if (e.key == "ArrowRight") {
if (this.matrixPosX < (this.matrixNodes[this.matrixPosY].length - 1)) {
this.matrixPosX++;
this.matrixNodes[this.matrixPosY][this.matrixPosX].focus();
//SCROLL
if (parent.style.left == 0 + 'px' || parent.style.left == 0) {
if(this.matrixPosY != 0){
console.log(this.matrixPosY)
parent.style.left = '-350px';
}else
parent.style.left = '-240px';
} else {
let old = parent.style.left;
old = old.replace("px", "");
parent.style.left = (moveRight + parseInt(old)) + "px";
}
////////////////
}
} else if (e.key == "ArrowLeft") {
if (this.matrixPosX > 0) {
this.matrixPosX--;
this.matrixNodes[this.matrixPosY][this.matrixPosX].focus();
//SCROLL
if (parent.style.left == 0 + 'px' || parent.style.left == 0) {
if(this.matrixPosY != 0)
parent.style.left = '350px';
else
parent.style.left = '238px';
} else {
let old = parent.style.left;
old = old.replace("px", "");
parent.style.left = (moveLeft + parseInt(old)) + "px";
}
/////////////////////////////
} else {
//Moverse al TAB
let tab = document.getElementById("tab-button-home");
tab.focus();
}
此函数 (keyboardAction) 是通过事件 keydown 调用的。
我想知道为什么跳一些 div.. 如果是因为在 HTML
处使用了其他事件或其他元素当 1 行代码就是解决方案时...
e.preventDefault()