2017-02-17 11 views
0

Я приложил следующий жест распознавани на мой взгляд, коллекция:IUICollectionViewDelegateFlowLayout перетащить особенность: Клетка ниже сотовой ячейки, долго нажимается становится перемещается

public void AttachLongPressGestureRecognizer() 
     { 
      // Create a custom gesture recognizer 
      var longPressGesture = new UILongPressGestureRecognizer((gesture) => 
      { 
       // Take action based on state 
       switch (gesture.State) 
       { 
        case UIGestureRecognizerState.Began: 
         var selectedIndexPath = this.MyCollectionView.IndexPathForItemAtPoint(gesture.LocationInView(View)); 

         if (selectedIndexPath != null) 
         { 
          this.MyCollectionView.BeginInteractiveMovementForItem(selectedIndexPath); 
         } 
         break; 

        case UIGestureRecognizerState.Changed: 
         this.MyCollectionView.UpdateInteractiveMovement(gesture.LocationInView(View)); 
         break; 

        case UIGestureRecognizerState.Ended: 
         this.MyCollectionView.EndInteractiveMovement(); 
         break; 

        default: 
         this.MyCollectionView.CancelInteractiveMovement(); 
         break; 
       } 

      }); 

В то время как перетащить функция, кажется, работает, но полученный selectedIndexPath неверен. Когда я долго нажимаю на определенную ячейку, ячейку под ней выбирают и перемещают. Я использую следующее, чтобы изменить размер ячеек в зависимости от размера экрана:

[Export("collectionView:layout:sizeForItemAtIndexPath:")] 
    public CoreGraphics.CGSize GetSizeForItem(UICollectionView collectionView, UICollectionViewLayout layout, NSIndexPath indexPath) 
    { 
     var cellHeight = collectionView.Frame.Height * 0.3; 
     var cellWidth = collectionView.Frame.Width * 0.45; 
     return new CoreGraphics.CGSize(cellWidth, cellHeight); 
    } 

Одно касания на один и те же клетки возвращает правильный indexPath, но длительное нажатие возвращает indexPath ячейки ниже ячеек нажато.

ответ

0

Это произошло потому, что высота другого вида мешала высоте коллекции.