nmokkary
nmokkary

Reputation: 1239

Get notified on clipboard change in swift

is there any Clipboard Change Event in swift? how can i get notified when clipboard changed in iOS application thanks

Upvotes: 11

Views: 11352

Answers (3)

Rodrigo Alvarez
Rodrigo Alvarez

Reputation: 78

Solution:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    // ...

    // Clipboard
    NotificationCenter.default.addObserver(self, selector: #selector(internalClipboardChanged), name: UIPasteboard.changedNotification, object: nil)

    // ...
}

func sceneDidBecomeActive(_ scene: UIScene) {
    // ...
    self.clipboardChanged()
}

// CLIPBOARD
@objc func internalClipboardChanged() {
    // ...
    self.clipboardChanged()
}

func clipboardChanged() {
    if (UIPasteboard.general.hasImages) {
        self.controller!.clipboardImage = UIPasteboard.general.image
    } else {
        self.controller!.clipboardImage = nil
    }
}

Upvotes: 0

Fangming
Fangming

Reputation: 25261

Here is a copy-able swift 5.0 version

NotificationCenter.default.addObserver(self, selector: #selector(clipboardChanged),
                                               name: UIPasteboard.changedNotification, object: nil)

And further, if you want to get the text in your clipboard in this event,

    @objc func clipboardChanged(){
        let pasteboardString: String? = UIPasteboard.general.string
        if let theString = pasteboardString {
            print("String is \(theString)")
            // Do cool things with the string
        }
    }

Upvotes: 19

Duyen-Hoa
Duyen-Hoa

Reputation: 15784

You can capture UIPastedboardChangedNotification as described in this link:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIPasteboard_Class/index.html#//apple_ref/c/data/UIPasteboardChangedNotification

Example: (impossible to make the code appeared correctly, I've pasted an image.

  1. Add notification to your didFinishLaunchingwithOptions call-back in AppDelegate

  2. Add function to handle when UIPastedboardChangedNotification sent to you AppDelegate

enter image description here

Upvotes: 3

Related Questions