Browse Source

【2025】【Page】页面编辑操作后退出进入View时undo崩溃问题修改

dinglingui 3 weeks ago
parent
commit
f5688f3817

+ 15 - 0
PDF Office/PDF Master/KMClass/KMNPDFPageEdit/KMNThumbnailView/KMNThumbnailBaseViewController+Action.swift

@@ -40,6 +40,7 @@ extension KMNThumbnailBaseViewController {
         currentUndoManager?.registerUndo(withTarget: self) { [weak self] targetType in
             self?.undoInsertPages(insertPages: deletePages, indexs: pageIndexs)
         }
+        thumbnailBaseViewDelegate?.thumbnailViewControlleHaveChange?(pageEditVC: self)
     }
     
     private func undoInsertPages(insertPages:[CPDFPage],indexs: IndexSet) {
@@ -64,6 +65,7 @@ extension KMNThumbnailBaseViewController {
         currentUndoManager?.registerUndo(withTarget: self) { [weak self] targetType in
             self?.deletePages(indexpaths: indexpaths)
         }
+        thumbnailBaseViewDelegate?.thumbnailViewControlleHaveChange?(pageEditVC: self)
     }
     
     private func undoReplacePages(of targetIndexpaths: Set<IndexPath>, with documents: [CPDFDocument],insertIndexSet:IndexSet,orgPages:[CPDFPage],orgIndexs: IndexSet) {
@@ -91,6 +93,7 @@ extension KMNThumbnailBaseViewController {
         currentUndoManager?.registerUndo(withTarget: self) { [weak self] targetType in
             self?.replacePages(of: targetIndexpaths, with: documents)
         }
+        thumbnailBaseViewDelegate?.thumbnailViewControlleHaveChange?(pageEditVC: self)
     }
     
     private func undoMovePages(movePages:[CPDFPage],destinationDex:Int,orgPages:[CPDFPage],orgPageDexs:[Int]) {
@@ -115,6 +118,7 @@ extension KMNThumbnailBaseViewController {
         currentUndoManager?.registerUndo(withTarget: self) { [weak self] targetType in
             self?.movePages(dragPages: movePages, destinationDex: destinationDex)
         }
+        thumbnailBaseViewDelegate?.thumbnailViewControlleHaveChange?(pageEditVC: self)
     }
     
     func insertFileComplete(newSelectIndexs: Set<IndexPath>){
@@ -131,6 +135,8 @@ extension KMNThumbnailBaseViewController {
         currentUndoManager?.registerUndo(withTarget: self) { [weak self] targetType in
             self?.undoDeleteIndexPaths(deleteIndexPath: newSelectIndexs)
         }
+        
+        thumbnailBaseViewDelegate?.thumbnailViewControlleHaveChange?(pageEditVC: self)
     }
     
     public func insertFormPages(insertPages: [CPDFPage],pageDex:Int) {
@@ -168,6 +174,7 @@ extension KMNThumbnailBaseViewController {
         currentUndoManager?.registerUndo(withTarget: self) { [weak self] targetType in
             self?.undoDeleteIndexPaths(deleteIndexPath: indexpaths)
         }
+        thumbnailBaseViewDelegate?.thumbnailViewControlleHaveChange?(pageEditVC: self)
     }
     
     public func insertBlankSize(pageSize: CGSize,pageDex:Int) {
@@ -185,6 +192,7 @@ extension KMNThumbnailBaseViewController {
         currentUndoManager?.registerUndo(withTarget: self) { [weak self] targetType in
             self?.undoDeleteIndexPaths(deleteIndexPath: indexpaths)
         }
+        thumbnailBaseViewDelegate?.thumbnailViewControlleHaveChange?(pageEditVC: self)
     }
     
     public func rotatePages(indexPaths: Set<IndexPath>, rotateAngle: Int) {
@@ -214,6 +222,7 @@ extension KMNThumbnailBaseViewController {
         currentUndoManager?.registerUndo(withTarget: self) { [weak self] targetType in
             self?.rotatePages(indexPaths: tIndexPaths, rotateAngle: -rotateAngle)
         }
+        thumbnailBaseViewDelegate?.thumbnailViewControlleHaveChange?(pageEditVC: self)
     }
     
     public func reversePages(indexs: IndexSet) {
@@ -248,6 +257,8 @@ extension KMNThumbnailBaseViewController {
                 currentUndoManager?.registerUndo(withTarget: self) { [weak self] targetType in
                     self?.reversePages(indexs: indexs)
                 }
+                
+                thumbnailBaseViewDelegate?.thumbnailViewControlleHaveChange?(pageEditVC: self)
             }
         }
     }
@@ -288,6 +299,8 @@ extension KMNThumbnailBaseViewController {
         currentUndoManager?.registerUndo(withTarget: self) { [weak self] targetType in
             self?.undoReplacePages(of: targetIndexpaths, with: documents, insertIndexSet: KMNTools.indexpathsToIndexs(indexpaths: tIndexPaths), orgPages: deletePages,orgIndexs: indexSet)
         }
+        
+        thumbnailBaseViewDelegate?.thumbnailViewControlleHaveChange?(pageEditVC: self)
     }
     
     public func deletePages(indexpaths:Set<IndexPath>) {
@@ -309,6 +322,7 @@ extension KMNThumbnailBaseViewController {
         currentUndoManager?.registerUndo(withTarget: self) { [weak self] targetType in
             self?.undoInsertPages(insertPages: deletePages, indexs: pageIndexs)
         }
+        thumbnailBaseViewDelegate?.thumbnailViewControlleHaveChange?(pageEditVC: self)
     }
     
     public func movePages(dragPages:[CPDFPage],destinationDex:Int) {
@@ -359,6 +373,7 @@ extension KMNThumbnailBaseViewController {
         currentUndoManager?.registerUndo(withTarget: self) { [weak self] targetType in
             self?.undoMovePages(movePages: dragPages, destinationDex: destinationDex, orgPages: changePages, orgPageDexs: changePageIndexs)
         }
+        thumbnailBaseViewDelegate?.thumbnailViewControlleHaveChange?(pageEditVC: self)
     }
     
     public func insertFromFilePath(fileNames:[String],formDex:Int,indexDex:UInt,selectIndexs:Set<IndexPath>,completionBlock:@escaping (Set<IndexPath>)->Void)-> Void {

+ 3 - 0
PDF Office/PDF Master/KMClass/KMNPDFPageEdit/KMNThumbnailView/KMNThumbnailBaseViewController.swift

@@ -15,6 +15,9 @@ import KMComponentLibrary
     @objc optional func insertPDFThumbnailViewControlle(pageEditVC:KMNThumbnailBaseViewController?,pdfDocment:CPDFDocument?)
     
     @objc optional func changeIndexPathsThumbnailViewControlle(pageEditVC:KMNThumbnailBaseViewController?,selectionIndexPaths: Set<IndexPath>,selectionStrings:String )
+    
+    @objc optional func thumbnailViewControlleHaveChange(pageEditVC:KMNThumbnailBaseViewController)
+
 }
 
 enum KMNThumbnailChoosePageStyle: Int {

+ 14 - 6
PDF Office/PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift

@@ -1054,17 +1054,19 @@ struct KMNMWCFlags {
     func enterPageEditMode() {
         pageEditViewController = KMNPageEditViewController(self.document)
         if(pageEditViewController != nil) {
-            bottomContendBox.addSubview(pageEditViewController!.view)
             pageEditViewController?.view.frame = bottomContendBox.bounds
             pageEditViewController?.thumbnailBaseViewDelegate = self
             pageEditViewController?.selectionIndexPaths = [IndexPath(item: listView.currentPageIndex, section: 0)]
             pageEditViewController?.view.autoresizingMask = [.width,.height]
             pageEditViewController?.currentUndoManager = listView.undoManager
-            toolbarManager.page_pageInfo_Property.text = String(listView.currentPageIndex + 1)
-            pdfToolbarController?.refreshSecondToolbarItemsState()
-            
-            listView.isHidden = true
         }
+        bottomContendBox.addSubview(pageEditViewController!.view)
+
+        toolbarManager.page_pageInfo_Property.text = String(listView.currentPageIndex + 1)
+        pdfToolbarController?.refreshSecondToolbarItemsState()
+        
+        listView.isHidden = true
+
         listView.updateActiveAnnotations([])
         listView.updateEditing([])
     }
@@ -1072,7 +1074,6 @@ struct KMNMWCFlags {
     func exitPageEditMode() {
         if pageEditViewController != nil {
             pageEditViewController?.view.removeFromSuperview()
-            pageEditViewController = nil
         }
         
         listView.isHidden = false
@@ -6745,6 +6746,13 @@ extension KMMainViewController: KMNThumbnailBaseViewDelegate {
         pdfToolbarController?.refreshSecondToolbarItemsState()
     }
     
+    func thumbnailViewControlleHaveChange(pageEditVC: KMNThumbnailBaseViewController) {
+        if(self.pageEditViewController?.view.superview == nil) { //当页面编辑不显示时,undo还会继续,所以需要刷新PDFView,如果页面编辑视图存在时,在退出页面编辑时一次性刷新
+            listView.layoutDocumentView()
+            botaViewController?.reloadData()
+        }
+    }
+    
 }
 
 //MARK: - KMNLeftSideViewControllerDelegate