Skip to content

Commit 84ce6a4

Browse files
committed
[#471] 하이라이트 터치 변경 중...
1 parent eba7de3 commit 84ce6a4

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

Presentation/OriginalPaper/OriginalViewController.swift

+35-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ final class OriginalViewController: UIViewController {
2323
let indexViewModel: IndexViewModel
2424

2525
var cancellable: Set<AnyCancellable> = []
26+
var startPoint: CGPoint?
2627

27-
let mainPDFView: CustomPDFView = {
28+
var mainPDFView: CustomPDFView = {
2829
let view = CustomPDFView()
2930
view.translatesAutoresizingMaskIntoConstraints = false
3031
view.backgroundColor = .gray200
@@ -199,6 +200,12 @@ extension OriginalViewController {
199200
let commentTapGesture = UITapGestureRecognizer(target: self, action: #selector(handleCommentTap(_:)))
200201
commentTapGesture.delegate = self
201202
self.view.addGestureRecognizer(commentTapGesture)
203+
204+
// 하이라이트 제스처: UIPanGestureRecognizer
205+
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(_:)))
206+
panGesture.minimumNumberOfTouches = 1
207+
panGesture.maximumNumberOfTouches = 1
208+
mainPDFView.addGestureRecognizer(panGesture)
202209
}
203210

204211
/// 데이터 Binding
@@ -263,7 +270,7 @@ extension OriginalViewController {
263270

264271
// 하이라이트 기능 실행
265272
NotificationCenter.default.publisher(for: .PDFViewSelectionChanged)
266-
.debounce(for: .milliseconds(700), scheduler: RunLoop.main)
273+
.debounce(for: .milliseconds(200), scheduler: RunLoop.main)
267274

268275
.sink { [weak self] _ in
269276
guard let self = self else { return }
@@ -460,6 +467,32 @@ extension OriginalViewController: UIGestureRecognizerDelegate {
460467
print("No match comment annotation")
461468
}
462469
}
470+
471+
// 하이라이트 터치 관련
472+
@objc func handlePanGesture(_ gesture: UIPanGestureRecognizer) {
473+
let location = gesture.location(in: mainPDFView)
474+
guard let page = mainPDFView.page(for: location, nearest: true) else { return }
475+
let convertedPoint = mainPDFView.convert(location, to: page)
476+
477+
switch gesture.state {
478+
case .began:
479+
self.startPoint = convertedPoint
480+
case .changed:
481+
guard let startPoint = startPoint else { return }
482+
if let selection = page.selection(from: startPoint, to: convertedPoint) {
483+
mainPDFView.setCurrentSelection(selection, animate: false)
484+
}
485+
case .ended:
486+
guard let startPoint = startPoint else { return }
487+
if let selection = page.selection(from: startPoint, to: convertedPoint) {
488+
let viewModel = MainPDFViewModel() // 네 뷰모델 인스턴스 생성
489+
viewModel.highlightText(in: mainPDFView, with: .yellow) // 원하는 색상 선택
490+
}
491+
self.startPoint = nil
492+
default:
493+
break
494+
}
495+
}
463496
}
464497

465498
//canPerformAction()으로 menuAction 제한

0 commit comments

Comments
 (0)