В последнее время я пытался заставить Peek And Pop работать с моим WKWebView. Вариант использования, для которого я его использую - это раздел комментариев RichText в моем приложении. Но поскольку в WebView уже сделано много настроек, я настроил минимальный воспроизводимый пример .
Пока я узнал следующее:
- Свойство позволяет LinkPreview WKWebView должно быть истинным, к которому оно по умолчанию относится.
- Вы должны реализовать пользовательский WKUIDelegate , в котором:
webView(_ webView: WKWebView, shouldPreviewElement...
должен вернуть true, если вы хотите показать Peek and Pop.
webView(_ webView: WKWebView, previewingViewControllerForElement...
должен вернуть контроллер вида для отображения pop и peek.
webView(_ webView: WKWebView, commitPreviewingViewController...
как только просмотр и окончание будут завершены, вы должны перенести представление на контроллер навигации или представить его здесь модально.
Эффект, которого я пытаюсь достичь, отображается здесь .
Проблема:
Что в настоящее время идет не так, так это то, что я возвращаю true из shouldPreviewElement, но тогда второй метод previewViewControllerForElement никогда не вызывается, как ожидалось. Я также посмотрел на другие реализации Pop и Peek (за пределами WKWebView, и они работают аналогично и не имеют этой проблемы).