2017-01-19 10 views
2

나는 간단한 제스처 컨트롤을 구현하기 위해 Cordova 앱에서 Hammer.js를 구현하는 Ember-Gestures을 사용하고 있습니다.페이지를 스크롤하지 않고 iOS에서 HammerJS 꼬집고 제스처를 사용하려면 어떻게해야합니까?

애니메이션이 움직이는 모든 동작 (전환, 변형, SVG 애니메이션), 화면이 스크롤되는 경우 스크롤이 완료되면 애니메이션이 멈추고 끝 상태가됩니다. . 특히, 수직으로 스크롤 가능한 페이지에 엘리먼트가있어 (이상적으로) 여러 엘리먼트로 또는 다시 하나로 펼쳐질 수 있어야합니다.

최적화 과정에서 iOS가 스크롤하는 동안 모든 애니메이션을 고정시킵니다. 그러나 핀치 및 스 와이프 제스처는 화면을 약간 스크롤 할 수 있기 때문에 사용자가 직접 스 와이프하는 경우 정교한 트랜지션이 완전히 정지 될 수 있습니다 (예 : 왼쪽 위로 가볍게 왼쪽으로 움직이는 경우).

here과 같은 스크롤하는 동안 렌더링 할 수있는 몇 가지 방법을 시도했지만 현재 버전의 iOS에서는 작동하지 않습니다. 나는 또한 나의 방법처럼 보인다는 엠버 - 제스처 확장을 통해이라고 제스처 동안 스크롤을 동결하는 hammerJS e.preventDefault() 메소드를 시도했다 :

swipeLeft(e) { 
    e.originalEvent.gesture.srcEvent.preventDefault() 
    // Do stuff 
}, 

... 그러나 이것은 어떤 감지 할 수없는 효과. (아마이 gesture, 아니 preventDefault() 방법 자체가 없었다? 잘못 여기에 뭔가와 엠버 - 제스처 추상이 떨어져 일부 시도 할 것으로 보인다.

내가 애니메이션 (이 아닌 것 같습니다) 스크롤하는 동안 렌더링을 유지할 수 있습니다 어떤 방법이 있나요, 또는 애니메이션을 수행하기 직전에 페이지 스크롤을 멈 춥니 다 (실행 중 스크롤을 방지)?

"핀치"또는 "스 와이프"제스처로 해석되는 것에 제약 조건을 추가 할 수있는 방법이 있습니다 스크롤 제스처라고도 해석되는 항목은 제외됩니다.

답변

0

여기 내 해결책으로 인해 이벤트가 추가되었습니다. 핸들러는 여러 손가락으로 화면을 터치 할 때 몸체가 고정 된 위치로 설정되어 터치 지속 시간 동안 스크롤 할 수 없도록합니다 (터치가 끝나면 고정 된 위치가 제거됨). 나는

내가 거기에 더 우아한 해결책이있을 수 있습니다 의심 pinchStartpinchEnd 이벤트 핸들러를 추가했지만 D3.js 애니메이션이 중간에 동결하지 않도록 곤란 동안 실수로 스크롤을 사용하지 않도록하기위한 목적이 있었다 신속하고 효과적인 해결책.