2016-08-15 4 views
4

스위프트에서 스 와이프하기위한 제스처 인식기를 구현하고 있습니다. 나는 카드의 flinging을 시뮬레이트 할 수 있기를 원합니다 (프로그램 적으로보기를 스 와이프).신속하게 스 와이프 제스처를 시뮬레이트합니다.

내장 함수가 있다고 가정했으나 검색 한 모든 것은 제스처를 스 와이프하지 않는 탭 제스처 용입니다. 당신은 당신 자신과 패스에 의해 UIPanGestureRecognizer를 만들 수 있습니다 UISwipeGestureRecognizer

override func viewDidLoad() { 
super.viewDidLoad() 

var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:") 
swipeRight.direction = UISwipeGestureRecognizerDirection.Right 
self.view.addGestureRecognizer(swipeRight) 

var swipeDown = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:") 
swipeDown.direction = UISwipeGestureRecognizerDirection.Down 
self.view.addGestureRecognizer(swipeDown) 

}

func respondToSwipeGesture(gesture: UIGestureRecognizer) { 

if let swipeGesture = gesture as? UISwipeGestureRecognizer { 


    switch swipeGesture.direction { 
     case UISwipeGestureRecognizerDirection.Right: 
      print("Swiped right") 
     case UISwipeGestureRecognizerDirection.Down: 
      print("Swiped down") 
     case UISwipeGestureRecognizerDirection.Left: 
      print("Swiped left") 
     case UISwipeGestureRecognizerDirection.Up: 
      print("Swiped up") 
     default: 
      break 
    } 
} 
} 
+0

보기가 현재 진행중인 코드로 이동합니까? – NSGangster

+0

스 와이프 제스처가 프로그래밍 방식으로 수행하는 작업을 원하십니까? 스 와이프 및 수동 모드에서 동일한 기능을 호출하는 것이 어떻습니까? 오프셋과 위치는 물론 수동으로 설정해야합니다. – Imbue

+0

@NSGangster 네, 움직이면서 잘 쓸어 버립니다. –

답변

-1

:

이 내가 몸짓 슬쩍을 구현하고 어떻게 그것은 wasDragged 방법에. 그래도 번역의 다른 값을 확인해야합니다.

let gesture = UIPanGestureRecognizer() 
gesture.setTranslation(CGPointMake(0, 100), inView: self.view) 
wasDragged(gesture) 

나는 다른 것을 필요로하지만. 왜이 제스처를 가장 먼저 시뮬레이트해야합니까?

+1

나는 이미 강타를하고있다.사용자가 스 와이프 한 위치를 게시 한 곳 어디서나 볼 수 없었습니다. 내가 뭐 놓친 거 없니. –

1

를 구현해야

let gesture = UIPanGestureRecognizer(target: self, action: Selector("wasDragged:")) 
    cardView.addGestureRecognizer(gesture) 
    cardView.userInteractionEnabled = true 
} 

func wasDragged (gesture: UIPanGestureRecognizer) {   
    let translation = gesture.translationInView(self.view) 
    let cardView = gesture.view! 

    // Move the object depending on the drag position 
    cardView.center = CGPoint(x: self.view.bounds.width/2 + translation.x, 
           y: self.view.bounds.height/2 + translation.y) 
+0

그래서 그들은 갑판의 카드를 던져 버튼을 누르십시오. 스 와이프하는 대신 아래쪽의 버튼을 누르거나 싫어할 때 틴더와 동일한 기능을합니다. –

+1

당신은 당신이 얼마나 당신의 카드를 쓸어 내지 않을지를 정확히 알고 있습니다. 이 정확한 스 와이핑 수준을 시뮬레이트하는 제스처를 만드는 대신 카드에 직접 적용하는 것이 어떻습니까? –

+0

버튼을 누르거나 살짝 쓸 수 있기를 원합니다. 그러나 버튼의 경우, 제스처가있는 것은 이상한 커브를 따르는 방법을 모르고 다음과 같은 종류의 내장 된 메소드가있을 수 있다고 생각합니다. –

0

SWIFT 3.0

let swipeRightOrange:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(slideToRightWithGestureRecognizer)) 
swipeRightOrange.direction = .Right; 

let swipeLeftOrange:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(slideToLeftWithGestureRecognizer)) 
swipeLeftOrange.direction = .Left; 

@IBAction func slideToLeftWithGestureRecognizer(gestureRecognizer:UISwipeGestureRecognizer) 
{ 
viewOrange.backgroundColor = UIColor.blue 
} 
@IBAction func slideToRightWithGestureRecognizer(gestureRecognizer:UISwipeGestureRecognizer) 
{ 
viewOrange.backgroundColor = UIColor.lightGray 
} 
0

를 들어 당신은 (당신이 실제로 아이폰 OS가 실제 사용자 작업이라고 생각 할 수없는, 내 말은)의 전체 의미있는 제스처 인식기를 시뮬레이션 할 수 있습니다.

그러나 실제 스 와이프처럼 코드를 속일 수 있습니다.

var gestureRecognizerSwipeRight = UISwipeGestureRecognizer(target: self, action: "activatedGestureRecognizer:") 
gestureRecognizerSwipeRight.direction = UISwipeGestureRecognizerDirection.Right 
yourView.addGestureRecognizer(gestureRecognizerSwipeRight) 

을 그리고 당신의 행동에 직접 전달합니다 :이를 위해 먼저 제스처 인식기를 만들 필요가

// Some other place in your code 
self.activatedGestureRecognizer(gesture: gestureRecognizerSwipeRight) 

귀하의 activatedGestureRecognizer(gesture:) 방법이 있어야 할 뭔가 같은 :

func activatedGestureRecognizer(gesture: UIGestureRecognizer) { 
    if let gestureRecognizer = gesture as? UIGestureRecognizer { 

     // Here you can compare using if gestureRecognizer == gestureRecognizerSwipeRight 
     // ...or you could compare the direction of the gesture recognizer. 
     // It all depends on your implementation really. 

     if gestureRecognizer == gestureRecognizerSwipeRight { 
      // Swipe right detected 
     } 
    } 
} 

공평하게, 이런 식으로하는 것은별로 이득이 없습니다. 실제로 제스처 인식기를 실제로 시뮬레이트하는 대신 스 와이프와 관련된 작업을 수행하는 것이 훨씬 더 좋습니다.

예를 들어 스 와이프 중에 카드에 애니메이션을 적용해야하는 경우 카드보기에서 사용자 상호 작용을 사용 중지하고 프로그래밍 방식으로 애니메이션을 적용하는 것이 좋습니다.

관련 문제