私はiPadで使用する少しの "pdf"ビューアを持っています。私はHTMLでPDFをレンダリングするのが非常に遅いことを発見して以来、私はPNGソリューションを使用しようとしました。 Webアプリケーションで、すべてがピクセル完全であるため、ズームは無効です。ハンマーで偽のズームが動作しない
私のアイデアは、どれほど大きくてもイメージをカプセル化する実際にはdivである「ウィンドウ」の種類を作成することでした。ここまでは順調ですね。
しかし、私はピンチピンチをエミュレートするためにハンマーを試してみることにしました。ピンチインやアウトするとページが揺れるように見えますが、何もできません...しかし、イベントハンドラ(アラート)にアラートを追加すると、期待通りに機能します。
これはコードです:
(function($){
var pdfViewer = {
pdf: {},
currentPage : 1,
currentZoom : 200,
defaultZoom : 200,
intervalZoom : 30,
el : {
pdfWindow : $('.pdf-window'),
image : $('.pdf-window').find('img')
},
init : function(){
this.bindEvents();
},
bindEvents : function(){
var self = this;
this.el.pdfWindow.hammer().on('pinchin',function(e){
self.currentZoom = self.currentZoom - self.intervalZoom;
self.updateZoom.apply(self);
});
this.el.pdfWindow.hammer().on('pinchout',function(e){
self.currentZoom = self.currentZoom + self.intervalZoom;
self.updateZoom.apply(self);
});
},
updateZoom : function(){
this.el.image.attr('width',this.currentZoom + '%');
}
};
pdfViewer.init();
})(jQuery);
そして、これはきれいデモです。あなたはiOSデバイスで試してみてください...間違っている可能性のあるアイデアはありますか?
バグデモ:私のiPad 1、iOSの5.1にhttp://jsbin.com/ivixov/1/quiet
を
pinch
イベントと仕事を使用することだと思います警戒?同時に2つのコードで矛盾することをしようとする問題があるかもしれないように思えます。この警告は現在、あなたがこれを防ぐ手段です。 – pandavenger@pandavenger私はイベントハンドラの中にアラートを置きます。本当に意味をなさないし、コードはあなたが見ることができるように本当に簡単です。 –
これらのイベントのいずれかを追加すると役立つかどうか教えてください。それ自身でズームするなど、iPadのデフォルト動作を防ぐ必要があるかもしれません。 https://github.com/EightMedia/hammer.js/wiki/Event-delegation-and-how-to-stopPropagation---preventDefaults – pandavenger