mirror of
https://github.com/mastodon/mastodon-ios
synced 2025-04-11 22:58:02 +02:00
Merge pull request #1089 from j-f1/fix-double-tap-image-text
Restore zoom behavior when double-tapping on text in an image
This commit is contained in:
commit
9699e93169
@ -70,6 +70,8 @@ extension MediaPreviewImageView {
|
||||
addSubview(imageView)
|
||||
|
||||
doubleTapGestureRecognizer.addTarget(self, action: #selector(MediaPreviewImageView.doubleTapGestureRecognizerHandler(_:)))
|
||||
doubleTapGestureRecognizer.delegate = self
|
||||
|
||||
imageView.addGestureRecognizer(doubleTapGestureRecognizer)
|
||||
if #available(iOS 16.0, *) {
|
||||
imageView.addInteraction(liveTextInteraction)
|
||||
@ -113,6 +115,21 @@ extension MediaPreviewImageView {
|
||||
|
||||
}
|
||||
|
||||
extension MediaPreviewImageView: UIGestureRecognizerDelegate {
|
||||
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
|
||||
guard gestureRecognizer == doubleTapGestureRecognizer else { return false }
|
||||
// block double-tap to select text gesture
|
||||
// but only if the Live Text button is toggled off
|
||||
if let gr = otherGestureRecognizer as? UITapGestureRecognizer,
|
||||
gr.numberOfTapsRequired == 2,
|
||||
#available(iOS 16, *),
|
||||
!liveTextInteraction.selectableItemsHighlighted {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
extension MediaPreviewImageView {
|
||||
|
||||
func setup(image: UIImage, container: UIView, forceUpdate: Bool = false) {
|
||||
|
@ -15,7 +15,6 @@ import VisionKit
|
||||
|
||||
protocol MediaPreviewImageViewControllerDelegate: AnyObject {
|
||||
func mediaPreviewImageViewController(_ viewController: MediaPreviewImageViewController, tapGestureRecognizerDidTrigger tapGestureRecognizer: UITapGestureRecognizer)
|
||||
func mediaPreviewImageViewController(_ viewController: MediaPreviewImageViewController, longPressGestureRecognizerDidTrigger longPressGestureRecognizer: UILongPressGestureRecognizer)
|
||||
func mediaPreviewImageViewController(_ viewController: MediaPreviewImageViewController, contextMenuActionPerform action: MediaPreviewImageViewController.ContextMenuAction)
|
||||
}
|
||||
|
||||
@ -31,7 +30,6 @@ final class MediaPreviewImageViewController: UIViewController {
|
||||
let previewImageView = MediaPreviewImageView()
|
||||
|
||||
let tapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer
|
||||
let longPressGestureRecognizer = UILongPressGestureRecognizer()
|
||||
|
||||
deinit {
|
||||
os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
||||
@ -58,13 +56,9 @@ extension MediaPreviewImageViewController {
|
||||
|
||||
tapGestureRecognizer.addTarget(self, action: #selector(MediaPreviewImageViewController.tapGestureRecognizerHandler(_:)))
|
||||
tapGestureRecognizer.delegate = self
|
||||
longPressGestureRecognizer.addTarget(self, action: #selector(MediaPreviewImageViewController.longPressGestureRecognizerHandler(_:)))
|
||||
longPressGestureRecognizer.delegate = self
|
||||
tapGestureRecognizer.require(toFail: previewImageView.doubleTapGestureRecognizer)
|
||||
tapGestureRecognizer.require(toFail: longPressGestureRecognizer)
|
||||
previewImageView.addGestureRecognizer(tapGestureRecognizer)
|
||||
previewImageView.addGestureRecognizer(longPressGestureRecognizer)
|
||||
|
||||
|
||||
let previewImageViewContextMenuInteraction = UIContextMenuInteraction(delegate: self)
|
||||
previewImageView.addInteraction(previewImageViewContextMenuInteraction)
|
||||
|
||||
@ -95,11 +89,6 @@ extension MediaPreviewImageViewController {
|
||||
delegate?.mediaPreviewImageViewController(self, tapGestureRecognizerDidTrigger: sender)
|
||||
}
|
||||
|
||||
@objc private func longPressGestureRecognizerHandler(_ sender: UILongPressGestureRecognizer) {
|
||||
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
||||
delegate?.mediaPreviewImageViewController(self, longPressGestureRecognizerDidTrigger: sender)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension MediaPreviewImageViewController: MediaPreviewPage {
|
||||
|
@ -273,10 +273,6 @@ extension MediaPreviewViewController: MediaPreviewImageViewControllerDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
func mediaPreviewImageViewController(_ viewController: MediaPreviewImageViewController, longPressGestureRecognizerDidTrigger longPressGestureRecognizer: UILongPressGestureRecognizer) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
func mediaPreviewImageViewController(
|
||||
_ viewController: MediaPreviewImageViewController,
|
||||
contextMenuActionPerform action: MediaPreviewImageViewController.ContextMenuAction
|
||||
|
Loading…
x
Reference in New Issue
Block a user