私はAndroidデバイスでSenchaTouch2アプリを開発しています。私のAndroidデバイスは通常の携帯電話ではないため、ハードウェアキーもあります。sencha touchのキーダウン、キーアップ、またはキープレスイベントに反応できますか?そしてどうやって?そのうちの1つで十分です。
役立つ場合:通常のJavaScriptでは、キーはonkeydown Listenerで処理でき、keyCodeは0です。
[更新] senchatouchのこのチュートリアルに取り組んでいます。私はすべてのステップを実行しました、そしてそれはうまくいきます。ここで、上記で説明したように、ハードウェアキーをキャッチしたいと思います。HandleAndroidHardwareのようにaddEventListenerを配置しました...。
したがって、私のコードは次のようになります。
Ext.application({
name: "NotesApp",
models: ["Note"],
stores: ["Notes"],
controllers: ["Notes"],
views: ["NotesList", "NotesListContainer", "NoteEditor"],
launch: function () {
var notesListContainer = {
xtype: "noteslistcontainer"
};
var noteEditor = {
xtype: "noteeditor"
};
Ext.Viewport.add(notesListContainer, noteEditor);
document.addEventListener("keydown", Ext.bind(onKeyDown, this), false);
function onKeyDown(e) {
// you are at the home screen
if (Ext.Viewport.getActiveItem().xtype == notesListContainer.xtype ) {
alert('aha'); // give out 'aha'
// LABEL1
} else {}
}
}
});
位置LABEL1で関数を呼び出すにはどうすればよいですか。私が呼び出したい関数は、クラスコントローラーにあります。メモとその名前はonNewScanCommandです。
Ext.define("NotesApp.controller.Notes", {
extend: "Ext.app.Controller",
config: {
refs: {
// We're going to lookup our views by xtype.
notesListContainer: "noteslistcontainer",
noteEditor: {
selector: 'noteeditor',
xtype: 'noteeditor',
autoCreate: true
}
},
control: {
notesListContainer: {
// The commands fired by the notes list container.
newNoteCommand: "onNewNoteCommand",
editNoteCommand: "onEditNoteCommand",
newScanCommand: "onNewScanCommand"
}
}
},
onNewScanCommand: function () {
console.log("onNewScanCommand");
var now = new Date();
var noteId = (now.getTime()).toString() + (this.getRandomInt(0, 100)).toString();
var newNote = Ext.create("NotesApp.model.Note", {
id: noteId,
dateCreated: now,
title: "",
narrative: ""
});
// here I call a function in PhnoeGap, then this call a nativ function
scan("echome", function(echoValue) {
newNote.set("title", echoValue.scanNummer);
newNote.set("narrative", echoValue.scanType);
});
var notesStore = Ext.getStore("Notes");
/*
if (null == notesStore.findRecord('id', newNote.data.id)) {
notesStore.add(newNote);
}*/
notesStore.add(newNote);
notesStore.sync();
notesStore.sort([{ property: 'dateCreated', direction: 'DESC'}]);
//this.activateNotesList();
},
// Base Class functions.
launch: function () {
this.callParent(arguments);
Ext.getStore("Notes").load();
console.log("launch");
},
init: function () {
this.callParent(arguments);
console.log("init");
}
});