WebView GestureRecognition не работает в формах Xamarin

У меня есть веб-просмотр. Когда этот веб-просмотр нажат, мне нужно сделать видимой кнопку, проблема. Распознавание жестов не работает.

мой Xaml

   <customRenderer:CustomWebView Uri = "{Binding SelectedJournal.Uri}" VerticalOptions = "FillAndExpand" HorizontalOptions = "FillAndExpand"  x:Name = "CustomWebView" AbsoluteLayout.LayoutBounds = "0,50,1,1" AbsoluteLayout.LayoutFlags = "SizeProportional"  >
            <customRenderer:CustomWebView.GestureRecognizers>
                <TapGestureRecognizer Tapped = "TapGestureRecognizer_OnTapped2" NumberOfTapsRequired = "1" ></TapGestureRecognizer>
            </customRenderer:CustomWebView.GestureRecognizers>
        </customRenderer:CustomWebView>

        <customRenderer:NavigationImageButton ItemTapped = "FullScreenOnTapped" Source = "full.jpg" AbsoluteLayout.LayoutBounds = "0.5,1,-1,-1" AbsoluteLayout.LayoutFlags = "PositionProportional"  HeightRequest = "60" WidthRequest = "60" x:Name = "FullScreenBtn" IsVisible = "False" >

В коде позади я назвал так

private void TapGestureRecognizer_OnTapped2(object sender, EventArgs e)
    {
        FullScreenBtn.IsVisible = true;
    }

Это должно работать, но это не работает

также мой пользовательский класс веб-представления рендеринга

  public class CustomWebView : WebView
{
    public static readonly BindableProperty UriProperty = BindableProperty.Create<CustomWebView, string>(p => p.Uri, default(string));

    public string Uri
    {
        get { return (string)GetValue(UriProperty); }
        set { SetValue(UriProperty, value); }
    }
}

Как этого добиться

Почему именно вы это сделаете?

FreakyAli 27.05.2019 09:37

@ G.hakim У меня есть кнопка, которую я использовал в этом веб-просмотре, чтобы показать PDF-файл, когда контент сенсорный. Мне нужно, чтобы всплывала кнопка, это моя цель.

Ishara Lakshitha 27.05.2019 09:52
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
456
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вместо использования распознавателя жестов в вашем веб-представлении вы можете использовать событие «Фокус» вашего представления для отображения вашей кнопки. Вы можете сделать что-то вроде этого:

var wb = new WebView
{
    HorizontalOptions = LayoutOptions.FillAndExpand,
    VerticalOptions = LayoutOptions.FillAndExpand,
    Source = "https://stackoverflow.com/questions/56320611/webview-gesturerecognition-not-working-in-xamarin-forms",
};

wb.Focused += (s, e) =>
{
   //Handle your logic here!
   wb.Unfocus();
 };

Здесь Unfocus() используется, если вы хотите реализовать свою логику каждый раз, когда нажимается веб-просмотр.

Неплохо! Спасибо за это.

TPG 11.04.2020 05:14

Я не получаю сфокусированное событие, запускаемое в iOS (15.0) при нажатии на WebView. Работает на Android.

David Clarke 03.11.2021 02:39

WebView используется в моем приложении для отображения форматированного текста. При нажатии на текст должен открыться редактор для изменения текста. Предлагаемое событие Focused работает на Android, но не на iOS (по крайней мере, на симуляторе iOS 15.0). Я нашел решение в комментариях к https://bugzilla.xamarin.com/42/42596/bug.html#c4. Добавление пустой метки в xaml в качестве прозрачного наложения WebView регистрирует событие касания и включает распознаватель жестов.

<Grid HeightRequest = "132">
    <WebView Grid.Column = "0" Grid.Row = "0"
             Source = "{Binding FormattedDescription, Converter = {tr:StringToWebViewSourceConverter}}"
             HeightRequest = "132"/>
    <Label Grid.Column = "0" Grid.Row = "0" Text = ""
           HeightRequest = "132" HorizontalOptions = "Fill">
        <Label.GestureRecognizers>
            <TapGestureRecognizer Command = "{Binding EditDescriptionCommand}"/>
        </Label.GestureRecognizers>
    </Label>
</Grid>

Другие вопросы по теме