2
제한된 영역 /보기에서만 이미지를 이동할 수 있도록 PanGestureRecognizer에 테두리를 설정할 수 있습니까?PanGestureRecognizer의 제한된 영역
제한된 영역 /보기에서만 이미지를 이동할 수 있도록 PanGestureRecognizer에 테두리를 설정할 수 있습니까?PanGestureRecognizer의 제한된 영역
당신은 UIPanGestureRecognizer의 대리자 메서드를 구현할 수)
아주 모자의 일종 당신에게 감사합니다. 제스처의 위치가 관심있는 범위에 있는지 확인하십시오. should * 메소드의 경우 false를 반환하여 제스처를 취소 할 수 있습니다. 제스처가 시작되면 State 속성을 Canceled로 설정하여 취소 할 수 있습니다.public class GestureView: UIView
{
RectangleF _bounds;
public GestureView (RectangleF rect) : base (rect)
{
this.BackgroundColor = UIColor.Brown;
UIPanGestureRecognizer pan = new UIPanGestureRecognizer (this, new Selector ("panViewWithGestureRecognizer:"));
this.AddGestureRecognizer (pan);
pan.WeakDelegate = this;
_bounds = new RectangleF (0,0,200, 100);
}
[Export("panViewWithGestureRecognizer:")]
void PanGestureMoveAround (UIPanGestureRecognizer p)
{
if (_bounds.Contains (p.LocationInView (this)))
{
Console.WriteLine ("PanGestureMoveAround true");
return;
}
Console.WriteLine ("PanGestureMoveAround false");
p.State = UIGestureRecognizerState.Cancelled;
return;
}
[Export ("gestureRecognizerShouldBegin:")]
bool ShouldBegin (UIGestureRecognizer recognizer)
{
if (_bounds.Contains (recognizer.LocationInView (recognizer.View)))
{
Console.WriteLine ("ShouldBegin true");
return true;
}
Console.WriteLine ("ShouldBegin false");
return false;
}
[Export ("gestureRecognizer:shouldReceiveTouch:")]
public bool ShouldReceiveTouch (UIGestureRecognizer recognizer, UITouch touch)
{
if (_bounds.Contains (touch.LocationInView (recognizer.View)))
{
Console.WriteLine ("ShouldReceiveTouch true");
return true;
}
Console.WriteLine ("ShouldReceiveTouch false");
return false;
}
}
감사합니다. "_bounds.Contains"는 매우 유용했습니다;) – Alex