GestureRecognizer不能只在ios中工作xamarin.forms
问题描述:
我使用xamarin.forms来做一个应用程序,但由于某种原因, ,我改变这个页面后,我把图像变大了,并添加了一些网格,gesturerecognizer停止只在iPhone工作,在Android它正常工作...凸轮有人看到这个代码中的问题?因为到目前为止,我不能。 由于我需要的模板,我正在编程创建一个页面。GestureRecognizer不能只在ios中工作xamarin.forms
private void CriaTela()
{
int row = 0;
int column = 0;
gridtextura.RowSpacing = 5;
gridtextura.ColumnSpacing = 15;
lstCategorias = lstCategorias.OrderBy(o => o.nome).ToList();
foreach (var item in lstCategorias)
{
Grid GridContent = new Grid
{
RowSpacing = 0,
//BackgroundColor = Color.Pink,
VerticalOptions = LayoutOptions.FillAndExpand,
RowDefinitions =
{
new RowDefinition { Height = new GridLength(8, GridUnitType.Star) },
new RowDefinition { Height = new GridLength(2, GridUnitType.Star) }
}
};
var textura = new CachedImage();
textura.Source = "texturaCateg";
textura.HorizontalOptions = LayoutOptions.FillAndExpand;
textura.VerticalOptions = LayoutOptions.FillAndExpand;
textura.Aspect = Aspect.Fill;
GridContent.BindingContext = item;
Grid boxColorView = new Grid
{
RowSpacing = 0,
// BackgroundColor = Color.Pink,
VerticalOptions = LayoutOptions.FillAndExpand,
RowDefinitions =
{
new RowDefinition { Height = new GridLength(2, GridUnitType.Star) },
new RowDefinition { Height = new GridLength(8, GridUnitType.Star) }
}
};
boxColorView.Children.Add(new BoxView { Color = Color.FromHex(item.corFundo), VerticalOptions = LayoutOptions.FillAndExpand }, 0, 1);
boxColorView.Children.Add(textura, 0, 1);
boxColorView.Children.Add(new BoxView { VerticalOptions = LayoutOptions.FillAndExpand }, 0, 0);
gridtextura.Children.Add(boxColorView, column, row);
gridtextura.Children.Add(GridContent, column, row);
//Qual categoria foi escolhida?
var CliqueCategoria = new TapGestureRecognizer();
CliqueCategoria.Tapped += (s, e) =>
{
CriaLoading();
var stacklayout = s as Grid;
categoriaEscolhida = (Categorias)stacklayout.BindingContext;
ChamaProdutos();
};
GridContent.GestureRecognizers.Add(CliqueCategoria);
GridContent.BackgroundColor = Color.Green;
if (item.imagem != null && item.imagem != "")
{
int initIndex = item.imagem.IndexOf(',');
string image = "";
image = item.imagem.Substring(initIndex + 1);
try
{
GridContent.Children.Add(new CachedImage { Source = ImageSource.FromStream(() => new MemoryStream(Convert.FromBase64String(image))), VerticalOptions = LayoutOptions.FillAndExpand }, 0, 0);
}
catch (Exception e)
{
GridContent.Children.Add(new CachedImage { Source = "error.png", VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.Fill, HeightRequest = 50, WidthRequest = 50 }, 0, 0);
}
}
GridContent.Children.Add(new Label { Text = item.nome, TextColor = Color.FromHex(item.corTexto), FontSize = Device.GetNamedSize(NamedSize.Micro, typeof(Label)), FontAttributes = FontAttributes.Bold, HorizontalTextAlignment = TextAlignment.Center, VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.CenterAndExpand }, 0, 1);
if (column == 0)
{
column = 1;
}
else
{
column = 0;
row++;
}
}
}
----------------编辑-------------------
我知道有点更多关于这个问题...因为现在我有一个图像是一个按钮...它正在工作...但现在,它已经超过了其他图像,然后它不再工作了...但它已经结束了图像...这是我在这里发布的这段代码的相同案例...我有一个网格在其他..在相同的位置和宽度和长度...和顶部网格不接收水龙头
答
该问题在xaml ...主网格是在其他网格内...这个其他网格造成的问题...我想也许它结束了点击次数
某些子元素有可能捕获水龙头并且不让它们通过父网格。尝试在'GridContent'子控件上设置'InputTranparent = true'。 – Ada
更多细节在这里:https://developer.xamarin.com/api/property/Xamarin.Forms.VisualElement.InputTransparent/ – Ada
所有的childreen应该得到InputTranparent = true,对吧? –