Xamarin.iOS でも UIGestureRecognizer が普通に使えるわけですが、Objective-C に比べてコードが短く書けて感動した話です。

本日の Obj-C の先生はこちら。

このサンプルを Xamarin.iOS に移植してみます。

サンプルコード

```c# GesturesSample_ViewDidLoad.cs
// Tap gesture
this.View.AddGestureRecognizer(new UITapGestureRecognizer(tap =>
{
Debug.WriteLine(“Double Tap.”);
})
{
NumberOfTapsRequired = 2 // Double tap
});

// Drag(Pan) gesture
this.View.AddGestureRecognizer(new UIPanGestureRecognizer(pan =>
{
var p = pan.TranslationInView(this.View);
var v = pan.VelocityInView(this.View);
Debug.WriteLine(“Pan. transration:{0}, velocity:{1}”, p, v);
}));

// Pinch gesture
this.View.AddGestureRecognizer(new UIPinchGestureRecognizer(pin =>
{
var scale = pin.Scale;
var v = pin.Velocity;
Debug.WriteLine(“Pinch. scale:{0}, velocity:{1}”, scale, v);
}));

// Swipe gesture
this.View.AddGestureRecognizer(new UISwipeGestureRecognizer(sw =>
{
Debug.WriteLine(“Swipe.”);
}));

// Rotate gesture
this.View.AddGestureRecognizer(new UIRotationGestureRecognizer(ro =>
{
var rotation = ro.Rotation;
var v = ro.Velocity;
Debug.WriteLine(“Rotate. rotation:{0}, velocity:{1}”, rotation, v);
}));

// Long press gesture
this.View.AddGestureRecognizer(new UILongPressGestureRecognizer(lp =>
{
Debug.WriteLine(“Long press.”);
}));
```

ViewController 全体のソースは コチラ

元のサイトのサンプルコードは 70行弱ありますが、Xamarin.iOS では 45行くらいで書けました。しかも、GestureRecongnizer の登録とハンドラが同じ場所に書けるので見やすい。

しかしこれ、ハンドラとか GesutureRecognizer、破棄しなくていいのかなあ。。。

Xamarin
iOS
C#

published

Ads

Read more!

amay077

Microsoft MVP(Xamarin). フルリモートワーカー. Geospatial Mobile app developer. Love C#.

amay077 amay077