sencha touch 实现键盘对list的操作

来源:互联网 发布:dota2起源2多核优化 编辑:程序博客网 时间:2024/05/22 00:19
在list的 show()事件中,先获取第一个的节点,使其选中,再添加按键事件
按键盘变换选中后,list也会随着选中而向下滚动
var first = list.getNode(0);list.select(first)document.addEventListener("keydown",selectListItem,false);function selectListItem(){var comp = activeItem_id;var list = comp.down('list');var length = list.all.elements.length;                  //list长度var first = list.getNode(0);                            //获取第一个节点var last = list.getNode(length-1);                      //获取最后一个节点var selected = list.selModel.getSelection()[0]          //当前选中节点var i = selected.viewIndex                              //获取选中节点的序列号var offset = list.selModel.getSelection()[0].offsetTop  //当前选中距list顶部距离var listHeight = list.getHeight() -200var scrollposition = offset + 20 - listHeightlist.scroller.updateBoundary();                         //必须先初始化  scroller的updateBoundary()事件,才能用键盘触发list的  scrollTo()事件   var e = window.event.keyCode;if(e == 56 || e == 54){if(i<length-1){i++;var next = list.getNode(i);list.select(next)   ;                             //设置某一节点为选中list.scroller.scrollTo({x: 0, y:scrollposition},true);}else{list.select(first);list.scrollTop();}}else if(e == 50 || e == 52){if(i != 0){i--;var previous = list.getNode(i);list.select(previous);list.scroller.scrollTo({x: 0, y:scrollposition+150},true);}else{list.select(last);var offset = list.selModel.getSelection()[0].offsetTop  //当前选中距list顶部距离if(offset > listHeight){list.scroller.scrollTo({x: 0, y:offset},true);}}}else if(e == 13 || e == 53){var node = list.selModel.getSelection()[0];var record = list.getRecord(node);                 //当前选中节点的recordcomp.showActionSheet(record);}}


0 0
原创粉丝点击