2017-09-24 41 views
2

我使用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++; 
      } 

     } 

    } 

----------------编辑-------------------

我知道有点更多关于这个问题...因为现在我有一个图像是一个按钮...它正在工作...但现在,它已经超过了其他图像,然后它不再工作了...但它已经结束了图像...这是我在这里发布的这段代码的相同案例...我有一个网格在其他..在相同的位置和宽度和长度...和顶部网格不接收水龙头

+0

某些子元素有可能捕获水龙头并且不让它们通过父网格。尝试在'GridContent'子控件上设置'InputTranparent = true'。 – Ada

+0

更多细节在这里:https://developer.xamarin.com/api/property/Xamarin.Forms.VisualElement.InputTransparent/ – Ada

+0

所有的childreen应该得到InputTranparent = true,对吧? –

回答

0

该问题在xaml ...主网格是在其他网格内...这个其他网格造成的问题...我想也许它结束了点击次数

相关问题