2016-11-22 60 views
1

如何防止$ionicGesture事件在'pinchin'或'pinchout'後'拖'?阻止拖後事件

我試過e.preventDefault(),e.gesture.preventDefault(),但拖動事件仍然被觸發。

$ionicGesture.on("drag", function (e) { 
    cursor_gesture = e.gesture; 
    cursor_center = cursor_gesture.center; 
    _drag_to_edit(); 
}, photo); 
$ionicGesture.on("pinchin", function (e) { 
    console.log(e); 
    e.preventDefault(); 
}, photo); 
$ionicGesture.on("pinchout", function (e) { 
    console.log(e); 
    .preventDefault(); 
}, photo); 

回答

0

您也可以嘗試這些:

event.preventDefault(); 
    event.stopPropagation(); 
    event.gesture.stopPropagation(); 
    event.gesture.preventDefault(); 
    event.gesture.stopDetect(); 
+0

我想的preventDefault只會阻止默認瀏覽器動作要與事件處理程序一起運行。而stopPropagation只會阻止事件冒泡,所以恕我直言,它們與其他類型的事件無關。 –

0

手動阻止其他事件處理程序的給定時間:

var lastPinchTime = undefined; 
var dragBlockTimeAmmount = 1000; //1 second 
$ionicGesture.on("drag", function (e) { 
    if((new Date() - lastPinchTime) < dragBlockTimeAmmount){ 
    e.preventDefault(); 
    } 
    else { 
    // ... 
    // your code here 
    // ... 
    } 

}, photo); 
$ionicGesture.on("pinchin", function (e) { 
    lastPinchTime = new Date(); 
}, photo); 
$ionicGesture.on("pinchout", function (e) { 
    lastPinchTime = new Date(); 
}, photo);