2016-04-11 14 views
1

Kısa ve uzun düğme tıklamaları nasıl kullanabilirim? Kısa buton tıklaması ve uzun buton tıklamasıyla ilgili belirli eylemler için belirli bir eyleme ihtiyacım var. Gesture Dinleyicisi'ni okudum ve Android MainActivity.cs dosyasına (MainActivity sınıfı) uygulamaya çalışıyorum. Ama uygulama çalışırken istisna var.Kısa ve uzun düğme tıklamaları nasıl kullanılır

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="Test.Page"> 
    <Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="100"/> 
    </Grid.RowDefinitions> 
    <ListView x:Name="MyButton" Grid.Row="0" /> 
    <ScrollView Orientation="Horizontal" Grid.Row="1"> 
     <Label x:Name="MyLabel" HorizontalOptions="Center">...</Label> 
    </ScrollView> 
    </Grid> 
</ContentPage> 
+0

Siz de bu yayına Xamarin.Forms etiketi eklemek isteyebilir. Lütfen sorunuzun içine girdiğiniz istisnaları da gönderin. Burada ayrıca bir düz ileri eğitim var: http://arteksoftware.com/gesture-recognizers-with-xamarin-forms/ –

cevap

3

Bunu yapmak için, düğme için özel bir oluşturucu kullanabilirsiniz. Her bir platform, halihazırda formlar düğmesiyle açıkta kalmayan uzun bir hareketi ele alma yoluna sahip olacaktır. Android'de

:

iOS'ta
[assembly: Xamarin.Forms.ExportRenderer (typeof (MyButton), typeof (MyButtonRenderer))] 
namespace MyApp.Android 
{ 
    public class MyButtonRenderer : ButtonRenderer 
    { 
     protected override void OnElementChanged (ElementChangedEventArgs<global::Xamarin.Forms.Button> e) 
       { 
        base.OnElementChanged (e); 
        if (e.OldElement == null) { 
         var nativeButton = Control; 
         nativeButton.LongClick += delegate { 
          //Do something 
         }; 
        } 
       } 
    } 
} 

:

[assembly:ExportRenderer (typeof(ButtonWithLongPressGesture), typeof(LongPressGestureRecognizerButtonRenderer))] 
namespace SampleApp.iOS 
{ 
    public class LongPressGestureRecognizerButtonRenderer : ButtonRenderer 
    { 
     ButtonWithLongPressGesture view; 

     public ButtonPressGestureRecognizerImageRenderer() 
     { 
      this.AddGestureRecognizer (new UILongPressGestureRecognizer ((longPress) => { 
       if (longPress.State == UIGestureRecognizerState.Began) { 
        view.HandleLongPress(view, new EventArgs()); 
       } 
      })); 
     } 

     protected override void OnElementChanged (ElementChangedEventArgs<Button> e) 
     { 
      base.OnElementChanged (e); 

      if (e.NewElement != null) 
       view = e.NewElement as ButtonWithLongPressGesture; 
     } 
    } 
} 
+0

Cevabınız için teşekkürler! Fakat XAML'ye yerleştirilen düğme ile nasıl çalışır (buna bir referans yazmalı veya yazmam gerek)? Bu kod ne zaman denir? Tekrar teşekkürler! – Evgeniy175

+0

Herhangi bir özel kontrol gibi kullanabilirsiniz. Özel oluşturucu oluşturma ve kullanma hakkında bu kılavuza bakın https://developer.xamarin.com/guides/xamarin-forms/custom-renderer/entry/ – QiMata

+0

Çalışır. Teşekkür ederim! – Evgeniy175

İlgili konular