В xamarin Forms, как остановить веб-просмотр видео YouTube, когда вернуться назад? - PullRequest
0 голосов
/ 26 сентября 2018

как остановить видео YouTube в веб-представлении при возврате, если вызывается метод OnDisappearing.

У меня есть следующее веб-представление XAML:

<ContentPage.Content>
    <StackLayout>
       <ActivityIndicator x:Name="Progress" IsEnabled="true" IsVisible="true" IsRunning="true" Color="Blue"/>
       <WebView x:Name="webView" VerticalOptions="FillAndExpand" Navigated="Handle_Navigated" Navigating="Handle_Navigating" />
    </StackLayout>
</ContentPage.Content>

и имеется следующее (обрезано) код в моем .cs файле:

        string name =   o.Link;
        string youtubeLink = "https://www.youtube.com/embed/";
        string url = string.Concat(youtubeLink,name);
        webView.Source = url;

    }

    protected override void OnDisappearing()
    {
        base.OnDisappearing();
        //   webView.IsEnabled = false;

    }

Когда на странице вызывается метод OnDisappearing, я хочу остановить видео на YouTube, но это не то, что происходит.

1 Ответ

0 голосов
/ 26 сентября 2018

То, что вы хотите, это остановить рендеринг WebView.Вы можете установить источник WebView на случайную страницу или использовать это:

Интерфейс

public interface ICustomWebViewRenderer
{
    void Pause();
    void Resume();
}

Xamarin.Forms CustomWebView:

public class CustomWebView : WebView
{
    public ICustomWebViewRenderer Renderer;

    public void Pause()
    {
        if (renderer != null) renderer.Pause();
    }

    public void Resume()
    {
        if (renderer != null) renderer.Resume();
    }
}

Xamarin.Android CustomWebViewViewRenderer:

public class CustomWebViewRenderer : WebViewRenderer, ICustomWebViewRenderer
{
    Android.Webkit.WebView webView;

    public CustomWebViewRenderer(Android.Content.Context context) : base(context) { }

    protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
    {
        base.OnElementChanged(e);

        webView = Control;
        if (e.OldElement != null)
            (e.OldElement as CustomWebView).Renderer = null;
        if (e.NewElement != null)
            (e.NewElement as CustomWebView).Renderer = this;
    }

    public void Pause()
    {
        if (webView != null) webView.OnPause();
    }

    public void Resume()
    {
        if (webView != null) webView.OnResume();
    }
}

Пример:

XAML:

<local:CustomWebView x:Name="webView" Source="https://youtube.com" />

OnDisappearing / OnAppearing:

protected override void OnDisappearing()
{
    webView.Pause();
    base.OnDisappearing();
}

protected override void OnAppearing()
{
    base.OnAppearing();
    webView.Resume();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...