Sapui5 从Launchpad到应用程序集的过渡关注SearchField

Sapui5 从Launchpad到应用程序集的过渡关注SearchField,sapui5,sap-fiori,Sapui5,Sap Fiori,我们的问题是,从SAP Fiori Launchpad到我们的应用程序的转换将焦点放在主视图的SearchField上 这是一个问题,因为在移动设备上,它会触发键盘的激活,从而阻止列表视图条目 你知道如何防止这种行为吗 直接进入应用程序不会产生此问题 这也发生在我们创建的另一个主/细节应用程序中 跨Android和iOS设备,在Safari、Chrome和Firefox上复制 亲切问候, Michael这是一个解决方案(目前为止我能找到的最简单的解决方案) 由于我无法复制您的问题:( onDa

我们的问题是,从SAP Fiori Launchpad到我们的应用程序的转换将焦点放在主视图的SearchField上

这是一个问题,因为在移动设备上,它会触发键盘的激活,从而阻止列表视图条目

你知道如何防止这种行为吗

直接进入应用程序不会产生此问题

这也发生在我们创建的另一个主/细节应用程序中

跨Android和iOS设备,在Safari、Chrome和Firefox上复制

亲切问候,

Michael

这是一个解决方案(目前为止我能找到的最简单的解决方案) 由于我无法复制您的问题:(

onDataLoaded()
或在
onAfterreding()方法中

//基本上,将焦点设置在如下内容上..或者只需创建任何SAPUI5元素和
setVisible(false)
并设置
focus()

更新:在
getHeaderFooterOptions()中捕获搜索

然后

让我知道这是否有效!
我将删除答案。

派对迟到了一点,但我们遇到了相同的问题。使用
onAfterRendering
只能工作一次,因为该生命周期挂钩只被调用一次。要解决此问题,请执行以下操作:

onInit: function () {
    // onAfterShow hook gets called every time the view is shown
    this.getView().addEventDelegate({onAfterShow: this._afterShow}, this);
},

_afterShow: function () {
    jQuery.sap.delayedCall(0, this, function () {
        jQuery('input').blur();
    });
}

希望能有所帮助。

您能提供触发从启动板到应用程序转换的代码吗?嗨,蒂姆。启动板是由启动板设计器和大量SAP事务在一个非常复杂的过程中设置的。SAP是如何在单击启动板互动程序和应用程序之间建立连接的我的手。因此我不能提供任何代码,这是SAP的东西。但我被告知sapui5标签将是SAP官方开发频道,因此我希望他们看到我的问题。我没有看到上述行为是许多主细节模式应用程序的开发者。sapui5版本是什么?SAP交付的应用程序的名称是什么?UI5版本是什么1.26.9我说的是SAP Fiori Launchpad@Deftoned,我想知道搜索框集中在哪个应用程序中。比如请假请求/批准/销售订单。我在渲染后添加了应用程序名称:function(){$(function(){$(Master--masterViewSearch”).focusout();},
它曾经有效,但没有再次有效,这完全令人困惑。不要删除您的答案,其他人可以在它的基础上进行构建。最好不要删除,现在还不行,因为我们不得不放弃这个。byId()它在桌面上找到了组件,但不适用于移动设备。因此,我们使用全名。请尝试更新答案。我尝试以不同的方式捕获该搜索字段:)您可以使用此方法获取搜索字段控件。_oControlStore.omatersearchfield(尽管我不推荐此方法),因为它涉及私有变量SHI z00bs,我目前无法证实你的答案,但这是有道理的。如果我没记错的话,我们在列表上用一个.focus()解决了这个问题。那我把它标为正确答案好吗?
getHeaderFooterOptions: function () {
    var _this = this;
    var objHdrFtr = {
       //sI18NMasterTitle: "YOUR_TITLE",
        onRefresh: function (searchField, fnRefreshCompleted) {
            _this._searchField = searchField;
        }
    };
    return objHdrFtr;
}
onAfterRendering(){
 if(this._searchField){
 this._searchField.onAfterRendering = function() {
            jQuery(this.getDomRef()).focusout()
        };
    }
}
onInit: function () {
    // onAfterShow hook gets called every time the view is shown
    this.getView().addEventDelegate({onAfterShow: this._afterShow}, this);
},

_afterShow: function () {
    jQuery.sap.delayedCall(0, this, function () {
        jQuery('input').blur();
    });
}