У меня есть веб-просмотр. Когда этот веб-просмотр нажат, мне нужно сделать видимой кнопку, проблема. Распознавание жестов не работает.
мой 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); }
}
}
Как этого добиться
@ G.hakim У меня есть кнопка, которую я использовал в этом веб-просмотре, чтобы показать PDF-файл, когда контент сенсорный. Мне нужно, чтобы всплывала кнопка, это моя цель.
Вместо использования распознавателя жестов в вашем веб-представлении вы можете использовать событие «Фокус» вашего представления для отображения вашей кнопки. Вы можете сделать что-то вроде этого:
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() используется, если вы хотите реализовать свою логику каждый раз, когда нажимается веб-просмотр.
Неплохо! Спасибо за это.
Я не получаю сфокусированное событие, запускаемое в iOS (15.0) при нажатии на WebView. Работает на Android.
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>
Почему именно вы это сделаете?