我正在開發一個應用程序,通過使用UIScrollView
來顯示UIImages
的圖庫,我的問題是,如何點擊zoom
並雙擊到zoom
,在處理UIScrollView
時它是如何工作的。如何點擊縮放和雙擊在iOS中縮小?
19
A
回答
38
您需要實現UITapGestureRecognizer - 文檔here - 在你的viewController
- (void)viewDidLoad
{
[super viewDidLoad];
// what object is going to handle the gesture when it gets recognised ?
// the argument for tap is the gesture that caused this message to be sent
UITapGestureRecognizer *tapOnce = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnce:)];
UITapGestureRecognizer *tapTwice = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTwice:)];
// set number of taps required
tapOnce.numberOfTapsRequired = 1;
tapTwice.numberOfTapsRequired = 2;
// stops tapOnce from overriding tapTwice
[tapOnce requireGestureRecognizerToFail:tapTwice];
// now add the gesture recogniser to a view
// this will be the view that recognises the gesture
[self.view addGestureRecognizer:tapOnce];
[self.view addGestureRecognizer:tapTwice];
}
基本上這個代碼是說,當一個UITapGesture
在self.view
方法tapOnce或tapTwice註冊將在self
被稱爲取決於它是單擊還是雙擊。因此,你需要把這些龍頭方法添加到您的UIViewController
:
- (void)tapOnce:(UIGestureRecognizer *)gesture
{
//on a single tap, call zoomToRect in UIScrollView
[self.myScrollView zoomToRect:rectToZoomInTo animated:NO];
}
- (void)tapTwice:(UIGestureRecognizer *)gesture
{
//on a double tap, call zoomToRect in UIScrollView
[self.myScrollView zoomToRect:rectToZoomOutTo animated:NO];
}
希望幫助
2
雨燕3.0版本上雙擊放大兩倍。
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var imageView: UIImageView!
某處(通常在viewDidLoad中):
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(onDoubleTap(gestureRecognizer:)))
tapRecognizer.numberOfTapsRequired = 2
scrollView.addGestureRecognizer(tapRecognizer)
處理程序:
func onDoubleTap(gestureRecognizer: UITapGestureRecognizer) {
let scale = min(scrollView.zoomScale * 2, scrollView.maximumZoomScale)
if scale != scrollView.zoomScale {
let point = gestureRecognizer.location(in: imageView)
let scrollSize = scrollView.frame.size
let size = CGSize(width: scrollSize.width/scale,
height: scrollSize.height/scale)
let origin = CGPoint(x: point.x - size.width/2,
y: point.y - size.height/2)
scrollView.zoom(to:CGRect(origin: origin, size: size), animated: true)
print(CGRect(origin: origin, size: size))
}
}
相關問題
- 1. ios圖表縮小雙擊後縮回
- 2. 捏和雙擊縮放NetworkImageView
- 3. 圖像不縮放在iOS雙擊
- 4. 動畫UIButton放大和縮小點擊
- 5. jvectormap平滑放大和縮小點擊
- 6. 雙擊縮放 - iOS設備,鈦
- 7. 雙擊縮放和縮放以放大ImageView在android
- 8. Android雙擊滑動縮放
- 9. OpenLayers:禁用縮放雙擊
- 10. 防止捏縮放和雙擊縮放在UIWebview
- 11. 如何修改TouchImageView雙擊放大和縮小?
- 12. 如何achivie雙擊縮放API 2.2?
- 13. 如何在iOS上的MPMoviePlayerViewController上禁用單指雙擊縮放?
- 14. 雙擊縮放和hammer.js問題
- 15. 點擊時縮放熱點
- 16. 放大縮小鼠標點擊Silverlight 2.0
- 17. 在webview上禁用雙擊縮放/取消縮放
- 18. 無論是雙擊還是點擊縮放
- 19. 放大和縮小在IOS
- 20. 縮放與scrollView上點擊
- 21. 如何縮放no。頁面點擊?
- 22. iOS顯示UIImage全屏啓用縮放(捏和雙擊)啓用
- 23. 頁面縮小點擊
- 24. 如何阻止右鍵單擊並雙擊進行縮放?
- 25. Android WebView使用setWideViewPort,禁用雙擊縮放但保持縮放?
- 26. Android是雙擊縮放動畫還是多步縮放?
- 27. 如何在Mupdf中實現雙擊縮放?
- 28. AS3放大和縮小鼠標點擊不在註冊
- 29. 防止沒有jQuery的雙擊縮放
- 30. leaflet.js wms圖層縮放無法雙擊
非常感謝您的回答,我會測試它並報告已經快有可能的。 – Bruno
有沒有可能Webview識別觸摸側邊webview中的鏈接 – Codesen
[tapOnce requireGestureRecognizerToFail:tapTwice];正是我所期待的。謝謝! – Bastek