2017-10-13 129 views
1

我正在構建一個應用程序來編輯iPad上的PDF。iOS 11 PDFKit不更新註釋位置

我正試圖用我添加到PDFView的超級視圖的panGesture識別器來實現註釋的拖動。問題是註釋的新矩形邊界被賦值,但這些更改不會反映在屏幕上。

這裏是我的代碼:

@objc func handlePanGesture(panGesture: UIPanGestureRecognizer) { 
    let touchLocation = panGesture.location(in: pdfView) 

    guard let page = pdfView.page(for: touchLocation, nearest: true) else { 
     return 
    } 
    let locationOnPage = pdfView.convert(touchLocation, to: page) 

    switch panGesture.state { 
    case .began: 

      guard let annotation = page.annotation(at: locationOnPage) else { 
       return 
      } 
      currentlySelectedAnnotation = annotation 
    case .changed: 

     guard let annotation = currentlySelectedAnnotation else { 
      return 
     } 
     let initialBounds = annotation.bounds 
     annotation.bounds = CGRect(origin: locationOnPage, 
            size: initialBounds.size) 

     print("move to \(locationOnPage)") 
    case .ended, .cancelled, .failed: 
     break 
    default: 
     break 
    } 
} 

希望你能幫助我。

回答

1

那麼,因爲沒有人回答。我認爲這個框架中存在一個錯誤,所以我會在經過一段時間的反覆試驗後發佈對我有用的東西。

let initialBounds = annotation.bounds 
annotation.bounds = CGRect(
     origin: locationOnPage, 
     size: initialBounds.size) 
page.removeAnnotation(annotation) 
page.addAnnotation(annotation) 

這不是優雅,但它的工作

0

使用Bezierpath邊界上改變了整個移動bezierpath。

PDF的內置行類型不會隨着邊界的變化而移動,因此必須在每次更改時設置startPoint和endPoint。