我很难理解SAPUI5中的自动焦点处理以及如何更改其默认行为:
假设我有一个带有SearchField的ResponsivePopover。当我打开popover时,SearchField会自动聚焦。
但是当有一个带有Button的<endButton>
聚合时,它会获得焦点。
在此处试试:JSbin: Focus in ResponsivePopover
function showPopover(oEvent) {
var oRespPopover = new ResponsivePopover({
showHeader: true,
title: "title",
content: [
new SearchField(),
// ...
],
/*
endButton: new sap.m.Button({
text: 'close',
press: function(oEvent) {
oRespPopover.close();
}
}),
*/
afterClose: function(oEvent) {
oEvent.getSource().destroy();
}
});
oRespPopover.openBy(oBtn);
};
定义哪个Control获得焦点,以及如何更改此行为? 我检查了Implementing Focus Handling documentation这个主题,但没有成功。
如何在不进行EndButton聚合的情况下阻止SearchField获得焦点(因为它会触发移动设备上的键盘)?
答案 0 :(得分:0)
如果目标控件具有稳定ID,您可以将该ID分配给ResponsivePopover
,Dialog
或Popover
的{{3}}关联,以便目标控件即使end
/ beginButton
聚合中有按钮,也会聚焦。
如果可用,则按
beginButton
和endButton
的顺序设置对弹出窗口的关注。但是,如果除了这两个按钮之外的控件需要获得焦点,请将initialFocus
设置为应该关注的控件。initialFocus
在XML中:
initialFocus="myId">
<content>
<SomeControl id="myId" />
</content>
或在JS(控制器)中:
// ...
title: "title",
initialFocus: this.getView().createId("myId"),
content: [
new SomeControl({
id: this.getView().createId("myId"),
}),
// ...
注意:对于移动设备,初始焦点不会触发打开屏幕键盘。
将
initialFocus
设置为输入控件不会打开移动设备上的屏幕键盘,因为浏览器限制,无法使用JavaScript代码打开屏幕键盘。屏幕键盘的打开必须由真实用户操作触发。 src