ios - 通知中心火 UIPasteboard 从 Safari 更改?

标签 ios swift nsnotificationcenter uipasteboard notificationcenter

我注册了一个通知如下:

NotificationCenter.default.addObserver(self,
     selector: #selector(functionName),
     name: NSNotification.Name.UIPasteboardChanged,
     object: nil);

调用一个函数:

func functionName(){
    print("changed");
}

当用户在应用程序中复制和粘贴时,通知会触发,但是,当用户从其他应用程序(如 Safari)复制时,它不会触发。

以下是我尝试通过以下方式触发通知的用例: 用户在 iPad 上同时使用我的应用程序和 Safari。用户从 Safari 复制内容,我的应用会自动检测到用户已复制内容并处理粘贴板。

3个相关问题:

  1. 我读到 CFNotificationCenter 是处理这些请求的更合适的通知中心,在这种情况下这是否正确?

  2. 这是否违反了“沙盒”,这就是通知仅在对应用程序进行本地更改时触发的原因?

  3. 是否有一种变通方法可以像我希望的那样在 UIPasteboardChanged 上触发函数?

最佳答案

如果你的APP进入后台,并且没有后台事件,你的APP将无法收到通知。您可以在收到通知时保留用户的副本和粘贴。然后你的应用程序进入前台,你可以比较新的复制和粘贴。

关于ios - 通知中心火 UIPasteboard 从 Safari 更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43938931/

相关文章:

ios - #selector() 的目标是否取决于 `addObserver` 的上下文(类与对象)?

ios - AppDelegate 没有响应 NSNotification

ios - 字典中的快速 numberOfRowsInSection

ios - 尝试在 Swift 中找到何时关闭微调器的正确事件

Xcode 6 代码编辑器不稳定的行为

swift - 如何在 TextField 中将占位符文本居中

objective-c - 如何在命令行工具程序中显示 NSUserNotification?

ios - 我的应用程序在添加 Aller 字体系列的字体(如粗体、常规和斜体)时崩溃

ios - Shell 脚本调用错误 : no such file or directory in xcode 8 with swift 3

ios - 界面生成器 : Why is my UIView transparent?