1

我不确定是否有人能够提供帮助,因为我遇到了 Genero 的这个问题,我很不受欢迎,但我会接受你们可能有的任何一般想法。

我有一个显示 Angular 应用程序的 web 视图的 Genero 网络应用程序,我遇到的问题是视图(基于 Chrome v72)在获得焦点以允许用户查看他的内容时不会在输入下滚动打字。

在浏览器中加载页面工作得很好,我已经在 Android Studio webview 中尝试过它也可以工作。

所以我不知道是不是 Genero 本身导致了问题,或者可能是它呈现视图的某种特定方式、不同的浏览器配置等。

如果您遇到此类问题,欢迎所有想法,无论上下文如何,我都会尝试一切,并且我想避免不得不在输入下创建空间并手动滚动焦点的一些技巧。

4

4 回答 4

1

确保您使用的是 INPUT 语句,而不是 DISPLAY 与您的 WEBCOMPONENT 一起使用。这是使用 Android https://4js.com/support/issue/?id=GMA-1319报告的,但相同的主体可能适用于 iOS、GBC、GDC

否则,请向您当地的 4Js 支持联系人提出案例(假设您正在维护中)。过去曾有过在该领域开展工作的案例https://4js.com/support/issue/?id=GMA-920,因此可能需要在该领域进行一些改进。

PS 参考你的开篇,4Js Genero 有付费支持模式。矛盾的是,您不会在这里看到很多 4Js Genero 问题,因为它们应该回答 1. 您当地的支持联系人和 2. 我们的开发者论坛。然后,这在使用诸如 Stack Overflow 帖子数量之类的度量的语言流行度测量中对我们不利。

于 2019-03-18T20:38:47.233 回答
0

发生的事情是您的 div 高度没有适应虚拟键盘。

我建议在构造函数中做这样的事情:

const $resizeEvent = fromEvent(window, 'resize')
       .map(() => {
         return window.innerHeight;
       })
       .debounceTime(20).subscribe(data => {
          this.overflowHeight = `${data}px`;
       });

这将做的是检测调整大小,当键盘出现时它会触发。然后将高度更改为 div 的新高度。当它关闭时,它将再次触发并再次使其恢复正常大小。

在您的 html 中:

<div [ngStyle]="'height': overflowHeight, 'overflow': 'auto'}" [scrollTop]="scrollHeight"></div>

如果您使用子视图,请注意确保检查有多少像素被包围并执行高度 - 像素。

每个输入都需要有一个唯一的 id:

<input id={{uniqueId}} (focus)="scrollTo(uniqueId) (scroll)="setScrollHeigth($event)" />

然后你做:

private scrollTo(_index: any) {
        if (window.screen.width === 360) {
            height = document.getElementById(_index).offsetTop;
            if (height > 0) { this.scrollHeight = height; }
            else if (this.scrollHeigthElm > 0) { this.scrollHeight = 0; }
        }
} 

private setScrollHeigth(_event: any) { 
    this.scrollHeigthElm = _event.srcElement.scrollTop; 
} 

这样做是检查您的滚动是否高于零并移动它。并在滚动为 0 时重置它。

于 2019-03-18T13:55:57.283 回答
0

好吧,这似乎更像是一个 Genero 问题,它处理 webviews 的方式,将虚拟键盘放在 web 内容上而不是在里面。我们把它带到了他们的论坛,他们正在调查它。

于 2019-03-19T20:01:22.567 回答
0

这是一个纯粹的 Genero 问题,据我所知,此后该问题已得到修复。

于 2020-12-06T15:32:48.067 回答