2013-02-09 30 views
6

Làm cách nào tôi có thể phát hiện tỷ lệ (hoặc khoảng cách bị chèn ép) của chụm để thu phóng khi meta name = "viewport" được đặt thành người dùng -scalable = yes?JavaScript: Phát hiện chụm để thu phóng khi 'người dùng có thể mở rộng' được đặt thành có

tôi đã thử nghiệm trên Android nhưng pinch để phóng to không thể phát hiện nếu meta name = "viewport" được thiết lập để sử dụng khả năng mở rộng = yes. Nếu meta name = "viewport" được đặt thành người dùng có thể mở rộng = no thì có thể phát hiện chụm để thu phóng nhưng sau đó tôi không thể phóng to tài liệu.

Dưới đây là các bài kiểm tra của tôi trên jsFiddle:

Hammer.js: http://jsfiddle.net/pE42S/

var pziW = "test"; 
var viewport_width = $(window).innerWidth(); 
var zoom = 0; 

var hammer = new Hammer(document.getElementById("touchme")); 

hammer.ontransformstart = function(ev) { 
    console.log("ontransformstart"); 
    console.log(ev); 
    //pziW = $(window).innerWidth()/2 * ev.scale; 
    zoom = ev.scale; 
    var msg = "ontransformstart " + pziW + " scale " + zoom; 
    log(msg); 
}; 
hammer.ontransform = function(ev) { 
    console.log("ontransform"); 
    console.log(ev); 
    zoom -= ev.scale; 
    viewport_width+=viewport_width*zoom; 
    zoom = ev.scale; 
    pziW=viewport_width; 
    //pziW = $(window).innerWidth()/2 * ev.scale; 
    jqUpdateSize(); 
    var msg = "ontransform " + pziW + " scale " + zoom; 
    log(msg); 
}; 
hammer.ontransformend = function(ev) { 
    console.log("ontransformend"); 
    console.log(ev); 
    var msg = "ontransformend " + pziW + " scale " + zoom; 
    log(msg); 
}; 

TouchSwipe: http://jsfiddle.net/pE42S/1/

$(function() {  
    $("#touchme").swipe({ 
     pinchStatus:function(event, phase, direction, distance , duration , fingerCount, pinchZoom) { 
      console.log("pinchStatus"); 
      console.log(event); 
      pziW=viewport_width - distance; 
      $("#log").text(pziW); 
      jqUpdateSize(); 
     }, 
     fingers:2, 
     pinchThreshold:0 
    }); 
}); 

Ai đó có một câu trả lời?

+0

Bạn đã xem plugin jQuery Touchy chưa? [touchyjs.org] (http://touchyjs.org/) – Cholesterol

+0

hình ảnh không hoạt động trong jsfiddle. Tôi không thể kiểm tra nó hoạt động như thế nào ngay bây giờ. Bạn có nghĩa là thu phóng gốc không hoạt động hoặc thu nhỏ 'chụm'? – fearis

+2

Tôi sẽ tham khảo câu trả lời cho câu hỏi StackOverflow này: http://stackoverflow.com/questions/11183174/simplest-way-to-detect-a-pinch. –

Trả lời

0

Một cách để đạt được điều này sẽ có một handler touchstart generic:

  • Chờ đến khi người dùng bắt đầu chạm vào ít nhất hai điểm (event.touches.length> 1)
  • Note x & y bắt đầu tọa độ cho cả hai lần chạm, đính kèm loa nghe touchend
  • Đợi đến khi chạm xong.
  • Xóa người nghe touchend & khoảng cách đo.

Thậm chí dễ dàng hơn sẽ sử dụng các sự kiện cử chỉ và thuộc tính event.scale, xem câu trả lời tuyệt vời tại Simplest way to detect a pinch để biết thêm chi tiết.

Các vấn đề liên quan