간단하게 들립니다 .. 트랙 패드를 잡고 손가락을 release 다음 손을 떼십시오 .
UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc]
initWithTarget:v action:@selector(handleSwipe:)];
swipeGesture.direction= UISwipeGestureRecognizerDirectionUp;
[v addGestureRecognizer:swipeGesture];
대신 팬은 위의 순서로 인식됩니다.
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]
initWithTarget:v action:@selector(handlePan:)];
[v addGestureRecognizer: panGesture];
팬에 댓글을 달면 스 와이프가 같은 동작으로 인식됩니다.
- 팬과 스 와이프의 차이점은 무엇입니까?
- iPhone 시뮬레이터에서 스 와이프를 시뮬레이션하는 방법은 무엇입니까?
답변
정의상, 스 와이프 제스처는 필연적으로 팬 제스처입니다. 둘 다 터치 포인트의 병진 이동과 관련이 있습니다. 차이점은 인식기 시맨틱에 있습니다. 팬 인식기는 병진 이동의 시작을 찾고 시간이 지남에 따라 어떤 방향 으로든 움직임을 계속보고하지만, 스 와이프 인식기는 사용자의 터치가 필요한 방향으로 선형으로 이동했는지 여부를 즉시 결정합니다.
기본적으로 두 인식기가 동일한 동작을 인식하지 않으므로 이동 및 스 와이프간에 충돌이 있습니다. 팬 인식기는 제스처가 더 단순하고 더 일반적이기 때문에 충돌을 “승리합니다”: 스 와이프는 팬이지만 팬이 스 와이프하지 않을 수 있으므로 팬이 먼저 인식하고 다른 인식기를 제외합니다.
위임 방법 gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
을 사용하거나 팬 인식기를와 슬쩍 인식기에 의존하게하여 위임없이이 충돌을 해결할 수 있어야합니다 requireGestureRecognizerToFail:
.
충돌이 해결되면 마우스를 빠르게 드래그하여 한 손가락 스 와이프를 시뮬레이션 할 수 있습니다. (마우스가 손가락보다 정확하기는하지만 장치에서 실제 작업을 수행하는 것보다 약간 더 까다 롭습니다.) Option & Shift 키를 누르면 두 손가락으로 팬 / 스 와이프 할 수 있습니다.
답변
손가락을 특정 방향으로 만 드래그하면 (스 와이프, 아래로 스 와이프, 왼쪽으로 스 와이프, 오른쪽으로 스 와이프) 스 와이프 제스처가 작동합니다. 예를 들어 테이블 뷰 컨트롤러의 스 와이프 가능한 셀
손가락을 원하는 방향으로 드래그하면 팬 제스처가 작동합니다. 당신은 그것에 가속 또는 감속을 줄 수 있습니다. 예를 들어, 한 장소에서 다른 장소로 객체를 이동하거나 스피너를 회전시키는 경우 ..
답변
사과 문서에 따라. Apple UIPanGestureRecognizer 다음과 같이 팬과 스 와이프의 차이점 :-
UIPanGestureRecognizer 는 패닝 (드래깅) 제스처를 찾는 UIGestureRecognizer 의 구체적인 하위 클래스입니다 . 사용자는 뷰를 이동하는 동안 하나 이상의 손가락을 뷰에서 눌러야합니다. 이 제스처 인식기에 대한 동작 방법을 구현하는 클라이언트는 제스처의 현재 변환 및 속도를 요청할 수 있습니다.
패닝 제스처는 연속적입니다. 허용되는 최소 손가락 수 ( minimumNumberOfTouches )가 팬으로 간주 될만큼 충분히 움직일 때 시작 ( 시작 )됩니다 . 최소 손가락을 눌렀을 때 손가락이 움직이면 변경 (변경)됩니다. 그것은 (종료 종료 모든 손가락을 들어 올릴 때).
이 클래스의 클라이언트는 조치 메소드에서 현재 제스처 변환 (translation (in 🙂 ) 및 변환 속도 (velocity (in 🙂 )에 대해 UIPanGestureRecognizer 오브젝트를 조회 할 수 있습니다 . 변환 및 속도 값에 좌표계를 사용해야하는 뷰를 지정할 수 있습니다. 클라이언트는 번역을 원하는 값으로 재설정 할 수도 있습니다.
스위프트 3 UIPanGestureRecognizer 데모 예 :- 리소스 링크
import UIKit
class ViewController: UIViewController {
// this records our circle's center for use as an offset while dragging
var circleCenter: CGPoint!
override func viewDidLoad() {
super.viewDidLoad()
// Add a draggable view
let circle = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 100.0, height: 100.0))
circle.center = self.view.center
circle.layer.cornerRadius = 50.0
circle.backgroundColor = UIColor.green()
// add pan gesture recognizer to
circle.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.dragCircle)))
self.view.addSubview(circle)
}
func dragCircle(gesture: UIPanGestureRecognizer) {
let target = gesture.view!
switch gesture.state {
case .began, .ended:
circleCenter = target.center
case .changed:
let translation = gesture.translation(in: self.view)
target.center = CGPoint(x: circleCenter!.x + translation.x, y: circleCenter!.y + translation.y)
default: break
}
}
}
사과 문서에 따라. Apple UITapGestureRecognizer
UITapGestureRecognizer은 의 구상 서브 클래스입니다 UIGestureRecognizer 그 하나 또는 여러 개의 탭을 찾습니다. 제스처를 인식하려면 지정된 수의 손가락이 지정된 횟수만큼보기를 눌러야합니다.
탭은 별개의 제스처이지만 제스처 인식기의 각 상태마다 별개입니다. 따라서, 연관된 동작 메시지는 제스처가 시작될 때 전송되고 제스처의 종료 상태 (및 그 포함)까지 각 중간 상태에 대해 전송된다. 탭 제스처를 처리하는 코드는 제스처 상태를 테스트해야합니다.
스위프트 3 UITapGestureRecognizer 데모 예제 리소스 링크
override func viewDidLoad() {
super.viewDidLoad()
let tap = UITapGestureRecognizer(target: self, action: #selector(doubleTapped))
tap.numberOfTapsRequired = 2
view.addGestureRecognizer(tap)
}
func doubleTapped() {
// do something cool here
print("Test TapGesture")
}
답변
http://hammerjs.github.io/ 에 따르면 차이점은 다음과 같습니다.
- 이동 : 동일한 큰보기에서 길 찾기
- 스 와이프 : 여러보기 간 전환
제스처는 동일합니다. 한 손가락을 사용하고 움직입니다.