浏览代码

add Paste Image

Marino Faggiana 6 年之前
父节点
当前提交
7fa1e551bf
共有 1 个文件被更改,包括 45 次插入11 次删除
  1. 45 11
      iOSClient/Scan/ScanCollectionView.swift

+ 45 - 11
iOSClient/Scan/ScanCollectionView.swift

@@ -53,6 +53,8 @@ class DragDropViewController: UIViewController {
     }
     private var filter: typeFilter = typeFilter.grayScale
     
+    override var canBecomeFirstResponder: Bool { return true }
+    
     //MARK: View Lifecycle Methods
     override func viewDidLoad() {
         super.viewDidLoad()
@@ -76,7 +78,7 @@ class DragDropViewController: UIViewController {
 
         add.setImage(CCGraphics.changeThemingColorImage(UIImage(named: "add"), multiplier:2, color: NCBrandColor.sharedInstance.brand), for: .normal)
         
-        let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(pasteImage(_:)))
+        let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPressGesture(recognizer:)))
         add.addGestureRecognizer(longPressRecognizer)
     }
     
@@ -98,8 +100,6 @@ class DragDropViewController: UIViewController {
         }
         
         loadImage(atPath: CCUtility.getDirectoryScan(), items: &itemsSource)
-        
-        self.collectionViewSource.reloadData()
     }
     
     //MARK: Button Action
@@ -164,6 +164,8 @@ class DragDropViewController: UIViewController {
         } catch {
             print(error.localizedDescription)
         }
+        
+        self.collectionViewSource.reloadData()
     }
     
     func filter(image: UIImage) -> UIImage? {
@@ -275,17 +277,49 @@ class DragDropViewController: UIViewController {
         })
     }
     
-    @objc func pasteImage(_ sender: AnyObject) {
+    // MARK: - UIGestureRecognizerv - Paste
+    
+    @objc func handleLongPressGesture(recognizer: UIGestureRecognizer) {
         
         let pasteboard = UIPasteboard.general
-        let data = pasteboard.data(forPasteboardType: kUTTypeFileURL as String)
         
-        if let data = pasteboard.data(forPasteboardType: kUTTypeFileURL as String),
-            let str = String(data: data, encoding: .utf8),
-            let url = URL(string: str),
-            let image = UIImage(contentsOfFile: str)
-        {
-            print("ciao")
+        if let recognizerView = recognizer.view, let recognizerSuperView = recognizerView.superview, pasteboard.hasImages {
+            
+            recognizerView.becomeFirstResponder()
+
+            UIMenuController.shared.menuItems = [UIMenuItem(title: "Paste", action: #selector(pasteImage))]
+            UIMenuController.shared.setTargetRect(recognizerView.frame, in: recognizerSuperView)
+            UIMenuController.shared.setMenuVisible(true, animated:true)
+        }
+    }
+    
+    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
+        if action == #selector(pasteImage) {
+            return true
+        }
+        return false
+    }
+    
+    @objc func pasteImage() {
+        
+        let pasteboard = UIPasteboard.general
+        
+        if pasteboard.hasImages {
+            
+            let fileName = CCUtility.createFileName("scan.png", fileDate: Date(), fileType: PHAssetMediaType.image, keyFileName: k_keyFileNameMask, keyFileNameType: k_keyFileNameType, keyFileNameOriginal: k_keyFileNameOriginal)!
+            let fileNamePath = CCUtility.getDirectoryScan() + "/" + fileName
+            
+            guard let image = pasteboard.image else {
+                return
+            }
+            
+            do {
+                try UIImagePNGRepresentation(image)?.write(to: NSURL.fileURL(withPath: fileNamePath), options: .atomic)
+            } catch {
+                return
+            }
+            
+            loadImage(atPath: CCUtility.getDirectoryScan(), items: &itemsSource)
         }
     }
 }