2014-02-13 6 views
2

Я пытаюсь захватить событие PanGesture, поэтому, когда пользователь проталкивает пальцем в любом месте справа, например, появляется RightView, а когда слева, Появляется LeftView.Xamarin IOS Load View form Gesture Event

Я использую следующий код. Это из документов Xamarin. Я немного изменил его. Мой «currView» - это мой выход для текущего представления. Когда я красть на тренажере с моей мыши, событие получает захвачено правильно, но когда пошаговый (после перерыва, указывающего) в фигурной скобке

if (recognizer.State != (UIGestureRecognizerState.Cancelled | UIGestureRecognizerState.Failed 
    { 

Код петля между ним и этим.

 HandleDrag(gesture)) 

один раз для каждого пиксела (думаю).

Я пытаюсь вызвать нагрузку другого вида, но не нашел места для его размещения. Я попробовал на

Console.WriteLine ("Here") 

и на сайте:

currView.AddGestureRecognizer (gesture); 

, но каждый раз, когда код завершает цикл, он просто игнорирует его и выполнение завершается. Как я могу загрузить загрузку следующего вида?

Линия комментария:

// NEED TO LOAD ANOTHER VIEW HERE 

показывает свои желания место, чтобы загрузить другой вид.

Вот мой код

}

ответ

3

яблочная документации:

A panning gesture is continuous. It begins (UIGestureRecognizerStateBegan) when the minimum number of fingers allowed (minimumNumberOfTouches) has moved enough to be considered a pan. It changes (UIGestureRecognizerStateChanged) when a finger moves while at least the minimum number of fingers are pressed down. It ends (UIGestureRecognizerStateEnded) when all fingers are lifted.

Проверка на UIGestureRecognizerState.Ended состояние, и если это произойдет, вы можете загрузить другой вид. Из вашего описания кажется, что вы можете использовать UISwipeGestureRecognizer вместо UIPanGestureRecognizer. UISwipeGestureRecognizer дискретный жест, так что вы не должны проверить состояния, вы просто реализовать это следующим образом:

Где-то в коде реализовать обработчик:

private void HandleSwipeRight() 
{ 
    // load another view 
    Console.WriteLine("Swipe right."); 
} 

И инициализировать жест recognzier в ViewDidLoad():

UISwipeGestureRecognizer swipeGestureRecognizerRight = new UISwipeGestureRecognizer(HandleSwipeRight); 
swipeGestureRecognizerRight.Direction = UISwipeGestureRecognizerDirection.Right; 
this.View.AddGestureRecognizer(swipeGestureRecognizerRight); 

Вы можете добавить еще один жест салфетки распознаватель для другого направления.