Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios WebView总是在移动设备上占据领先地位-可能存在Bug_Ios_Iphone_Webview_Gluon_Javafxports - Fatal编程技术网

Ios WebView总是在移动设备上占据领先地位-可能存在Bug

Ios WebView总是在移动设备上占据领先地位-可能存在Bug,ios,iphone,webview,gluon,javafxports,Ios,Iphone,Webview,Gluon,Javafxports,在我的代码中,我有一个webview,在它上面我放置了另一个带有标签的窗格,如下所示。 尽管在Windows中它工作正常,并且正如预期的那样,但在移动平台(经过iOS测试)上,WebView总是出现在最前面,而忽略了它上面的节点。我想这是一种错误,但我会很感激任何克服它的想法,直到它被修复。提前谢谢。源代码可以从下载 iOS/Android上的WebView控件使用本机控件,这意味着它是操作系统本机层的一部分。例如,请参见iOS上的WebView 它可以添加在JavaFX层的前面,也可以添加在J

在我的代码中,我有一个webview,在它上面我放置了另一个带有标签的窗格,如下所示。 尽管在Windows中它工作正常,并且正如预期的那样,但在移动平台(经过iOS测试)上,WebView总是出现在最前面,而忽略了它上面的节点。我想这是一种错误,但我会很感激任何克服它的想法,直到它被修复。提前谢谢。源代码可以从下载


iOS/Android上的WebView控件使用本机控件,这意味着它是操作系统本机层的一部分。例如,请参见iOS上的WebView

它可以添加在JavaFX层的前面,也可以添加在JavaFX层的后面,并且它的z顺序高于所有其他JavaFX视觉效果

在任何情况下,它都不会参与JavaFX层内的Z-排序:排序任何JavaFX控件/容器都不会解决它,它将始终位于任何控件/容器之上


唯一的建议是,您应该尽量避免在WebView上添加JavaFX组件,同时避免将WebView控件放置在允许侧面弹出窗口或对话框的视图中。

iOS/Android上的WebView控件使用本机控件,这意味着它是OS本机层的一部分。例如,请参见iOS上的WebView

它可以添加在JavaFX层的前面,也可以添加在JavaFX层的后面,并且它的z顺序高于所有其他JavaFX视觉效果

在任何情况下,它都不会参与JavaFX层内的Z-排序:排序任何JavaFX控件/容器都不会解决它,它将始终位于任何控件/容器之上


唯一的建议是,您应该尽量避免在WebView顶部添加JavaFX组件,同时避免将WebView控件放置在允许侧边弹出窗口或对话框的视图中。

因为JavaFX WebView不参与Z排序,并且总是显示在所有其他控件的顶部(请参阅Jose Pereda答案),作为一个临时解决方案,我决定在WebView中加载时隐藏WebView并显示“加载窗格”

下面是我如何在代码中实现它的示例:

public class WebViewController {

   @FXML
   protected WebView webView;

   @FXML
   private void initialize() {
       WebEngine webEngine = webView.getEngine();
       webEngine.getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> {

            webView.setVisible(newState == State.SUCCEEDED);
            loadingPane.setVisible(newState == State.RUNNING);

        });
   } // initaliaze()
} // class WebViewController

由于JavaFX WebView不参与Z排序,并且总是显示在所有其他视图的顶部(请参见Jose Pereda的回答),因此作为临时解决方案,我决定隐藏WebView,并在WebView中加载时显示“加载窗格”

下面是我如何在代码中实现它的示例:

public class WebViewController {

   @FXML
   protected WebView webView;

   @FXML
   private void initialize() {
       WebEngine webEngine = webView.getEngine();
       webEngine.getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> {

            webView.setVisible(newState == State.SUCCEEDED);
            loadingPane.setVisible(newState == State.RUNNING);

        });
   } // initaliaze()
} // class WebViewController

我之所以希望这样做,是因为我在另一个项目中有一个“加载窗格”,每当用户等待页面加载或请求完成时,它都会出现在所有内容的顶部。一些用户没有意识到他们通过webview提交了一些内容,因为“加载窗格”没有出现。还有一些人认为它只是挂在那里。这是一个问题:)的确如此,但你需要找到一种不同的方式,也许有一个进度指标。检查
AppBar
,它包含API以在web视图加载时显示进度指示(从4.2.0开始)。是否有办法在web视图中加载进度指示符?仅当您将其加载为html内容时,我可能会这样做,因为我希望在等待时与rest应用程序保持一致。感谢Jose我之所以要这样做,是因为我在另一个项目中有一个“加载窗格”,每当用户等待加载页面或请求完成时,它都会出现在所有内容的顶部。一些用户没有意识到他们通过webview提交了一些内容,因为“加载窗格”没有出现。还有一些人认为它只是挂在那里。这是一个问题:)的确如此,但你需要找到一种不同的方式,也许有一个进度指标。检查
AppBar
,它包含API以在web视图加载时显示进度指示(从4.2.0开始)。是否有办法在web视图中加载进度指示符?仅当您将其加载为html内容时,我可能会这样做,因为我希望在等待时与rest应用程序保持一致。谢谢Jose