月亮上没有聚光灯。input装饰器"SECOND TIME",同时在渲染中禁用指针模式



我在开发示例应用程序时遇到了这个问题。我共享的jsfiddle链接具有在单击按钮时打开弹出窗口的基本功能。由于渲染函数在创建时仅被调用一次,因此首次禁用指针模式和 spot 工作。但是为什么每次enyo都需要禁用指针模式并将点设置为开发人员想要的组件。

我的要求是,每当弹出窗口打开对话框时,聚光灯都应该在我指定的组件上。它可能是弹出窗口中的第一个组件或开发人员指定的我可能不知道其他方法可以做到这一点/接近相同的方法,所以请告诉我。

这是jsfiddle链接:

http://jsfiddle.net/pL1cawnw/1/

enyo.kind({
name:'app',
kind:'enyo.Control',
components:[
    {name:'popupBtn',kind:'moon.Button', content:'Open', ontap:'btnTapped'},
    {name:'popupBtn2',kind:'moon.Button', content:'Dummy'},
    {name:'inputPopUp', kind: 'inputPop'}
],
btnTapped:function(){
    this.$.inputPopUp.show();
},
rendered: function(){
    this.inherited(arguments);
    enyo.Spotlight.setPointerMode(false);
    enyo.Spotlight.spot(this.$.popupBtn);    
}
});
enyo.kind({
name:'inputPop',
kind:'enyo.Popup',
center:true,
scrim:true,
floating:true,
components:[
    {name:'inputDecorator', spotlight: true, kind:'moon.InputDecorator', style:'width:200px; height: 80px', components:[
        {kind:'moon.Input', name:'input', dismissOnEnter:true}
    ]} 
],
create:function(){
    this.inherited(arguments);
},
rendered: function(){
    this.inherited(arguments);
    enyo.Spotlight.setPointerMode(false);
    enyo.Spotlight.spot(this.$.inputDecorator);
}
});
new app().renderInto(document.body);

除了这种进行初始聚焦的方式之外,还有其他方法可以实现相同的方法吗?

必须禁用指针模式的原因是,当用户移动指针时,您无法成功发现某些内容,因为这可能会导致该点从控件悬停到其他位置,然后再跳回来。 如果禁用指针模式,则会发生这种情况。

您可以在不将指针模式设置为 false 的情况下调用 spot,如果用户切换回 5 路(至少在最新代码中(,点控件将成为焦点控件。

编辑:我应该补充一点,当moon.input有焦点时,它不会显示聚光灯突出显示。 如果您希望输入立即"可键入",则可能需要将焦点设置在输入上。 另外,你应该看看月亮的来源。弹出窗口,因为它会进行一些特殊处理,以防止聚光灯从弹出窗口中泄漏出来。

最新更新