2014-09-17 3 views
5

Xamrin Forms에서 스 와이프 기능을 삭제하고 싶습니다. Xamrin Forms : ListView에서 스 와이프하여 (제스처)

  1. 목록보기를하고 "CustomListView"에 바인더 제본 명령에 액세스 할 수 있어요 아래에 추가로 출근 제스처에이 명령을 추가 할 수 있어요 렌더러의 "OnElementChanged"에서 사용자 지정 렌더러를 쓴 .

    swipeGestureRecognizer = new UISwipeGestureRecognizer (() => { 
         if (command == null) { 
          Console.WriteLine ("No command set"); 
          return;} 
    
         command.Execute (null); 
        }); 
    

그러나 내가 목록보기에서 슬쩍 행에 숨겨진/버튼이 보이지 만들 수 있도록 특정 행 (슬쩍 행)에 접속에 문제가 발생하고있다. 같은 것을 구현하는 방법을 권할 수 있습니까?

+0

내가 대신 ItemTemplate을 또는 UITableCell에 제스처를 추가합니다. – SKall

+0

안드로이드에 대해서도 이것을 달성 했습니까? –

답변

4

은 당신이 뭔가를 할 수 있습니다 :

protected override void OnElementChanged (ElementChangedEventArgs<ListView> e) 
    { 
     base.OnElementChanged (e); 
     var swipeDelegate = new SwipeRecogniserDelegate(); 
     swipeGestureRecognizer = new UISwipeGestureRecognizer { 
      Direction = UISwipeGestureRecognizerDirection.Left, 
      Delegate = swipeDelegate 
     }; 
     swipeGestureRecognizer.AddTarget (o => { 
      var startPoint = swipeDelegate.GetStartPoint(); 
      Console.WriteLine (startPoint); 
      var indexPath = this.Control.IndexPathForRowAtPoint(startPoint); 
      if(listView.SwipeCommand != null) { 
       listView.SwipeCommand.Execute(indexPath.Row); 
      } 
     }); 
     this.Control.AddGestureRecognizer (swipeGestureRecognizer); 
     this.listView = (SwipableListView)this.Element; 
    } 

키는 SwipeRecogniserDelegate입니다. 이렇게 구현 됨 :

public class SwipeRecogniserDelegate : UIGestureRecognizerDelegate 
{ 
    PointF startPoint; 

    public override bool ShouldReceiveTouch (UIGestureRecognizer recognizer, UITouch touch) 
    { 
     return true; 
    } 

    public override bool ShouldBegin (UIGestureRecognizer recognizer) 
    { 
     var swipeGesture = ((UISwipeGestureRecognizer)recognizer); 
     this.startPoint = swipeGesture.LocationOfTouch (0, swipeGesture.View); 
     return true; 
    } 

    public PointF GetStartPoint() 
    { 
     return startPoint; 
    } 
} 
4

삭제할 스 와이프가 이제 ContextAction을 사용하여 Xamarin Froms ListViews에 내장됩니다. 여기에 가장 기본적인 튜토리얼이 있습니다. 구현하기가 매우 쉽습니다.

http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/listview/

+1

xamarin 폼 구현은 가장 기본적인 사용 사례를 다루고 있습니다. 참고 : 불행히도 xamarin 양식 구현을 사용하여 오른쪽으로 스 와이프 할 수는 없습니다. 또한 전혀 사용자 정의 할 수없는 가장 기본적인 메뉴 항목 (예 : 텍스트의 다른 글꼴 선택)으로 인해 사용자 정의 렌더러를 거의 즉시 살펴 봐야합니다. – wislon

+0

그래, 특히 이것이 부족하다는 문서를 찾았습니다. – Sam07