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