在后台接收 UIPasteboard (generalPasteboard) 通知

2023-12-31

有办法做到这一点吗?我注册我的对象UIPasteboardChangedNotification在启动时,但是当将其发送到后台并打开(例如)Safari 并复制一些文本时,我的处理程序永远不会被调用。 (我现在只使用模拟器)。

我都用过:

[[NSNotificationCenter defaultCenter] addObserver:self 
    selector:@selector(pasteboardNotificationReceived:) 
    name:UIPasteboardChangedNotification 
    object:[UIPasteboard generalPasteboard]];

and:

[[NSNotificationCenter defaultCenter] addObserver:self 
    selector:@selector(pasteboardNotificationReceived:) 
    name:UIPasteboardChangedNotification 
    object:nil ];

注册我的处理程序。


我有同样的问题。根据UIPasteboard类参考 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIPasteboard_Class/Reference.html的文档changeCount财产(重点是我的):

每当粘贴板的内容发生更改时(具体来说,当添加、修改或删除粘贴板项目时),UIPasteboard 都会递增此属性的值。在增加更改计数后,UIPasteboard 发布名为 UIPasteboardChangedNotification(用于添加和修改)和 UIPasteboardRemovedNotification(用于删除)的通知。 ...该类还更新更改计数当应用程序重新激活并且另一个应用程序更改了粘贴板内容时。当用户重新启动设备时,更改计数将重置为零。

我读到这意味着我的申请将收到UIPasteboardChangedNotification我的应用程序重新激活后会收到通知。但仔细阅读就会发现,这只是changeCount重新激活应用程序时会更新。

我通过跟踪粘贴板来处理这个问题changeCount在我的应用程序委托中,并在找到时发布预期的通知changeCount当应用程序在后台时已更改。

在应用程序委托的界面中:

NSUInteger pasteboardChangeCount_;

在应用程序委托的实现中:

- (BOOL)application:(UIApplication*)application
    didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
  [[NSNotificationCenter defaultCenter]
   addObserver:self
   selector:@selector(pasteboardChangedNotification:)
   name:UIPasteboardChangedNotification
   object:[UIPasteboard generalPasteboard]];
  [[NSNotificationCenter defaultCenter]
   addObserver:self
   selector:@selector(pasteboardChangedNotification:)
   name:UIPasteboardRemovedNotification
   object:[UIPasteboard generalPasteboard]];

  ...
}

- (void)pasteboardChangedNotification:(NSNotification*)notification {
  pasteboardChangeCount_ = [UIPasteboard generalPasteboard].changeCount;
}

- (void)applicationDidBecomeActive:(UIApplication*)application {
  if (pasteboardChangeCount_ != [UIPasteboard generalPasteboard].changeCount) {
    [[NSNotificationCenter defaultCenter] 
     postNotificationName:UIPasteboardChangedNotification
     object:[UIPasteboard generalPasteboard]];
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在后台接收 UIPasteboard (generalPasteboard) 通知 的相关文章

随机推荐

  • 在 Linux 中将 RCurl 安装为 R 开发工具的一部分时出错

    首先 我对 Linux 还很陌生 我在 Linux 服务器 Ubuntu 12 10 Quantal Quetzal 上安装了 R 3 1 1 最新版本 并尝试在 R 中安装 devtools 包 当我运行install packages
  • gcc 命令中 -fsyntax-only 选项有什么用?

    我读到了关于 fsyntax only选项中gcc命令的手册页 我知道它显示丢失头文件的错误 并且忽略用户编码错误 我需要知道我的理解是否正确 我也需要更多地了解这个选项 那么有人可以解释一下这个选项吗 fsyntax only防止编译器生
  • 为什么不能在drawRect中改变UIView的背景颜色?

    理论上 您可以通过以下方式轻松设置背景颜色 self backgroundColor UIColor redColor 在drawRect中 但这没有任何效果 您可以更改视图的大小 边框 子视图等 但不能更改背景颜色 类似的 SO 查询建议
  • 如何在 shell 脚本中的 curl 命令中传递变量

    我有一个curl命令 curl u USER ID PASSWORD X GET http blah gso woo com 8080 rest job execution job details job id 变量job id其中有一个值
  • Backbone.Collection 上的 toJSON#在哪里?

    我不知道为什么 但我无法让它工作 var friends new Backbone Collection name Athos job Musketeer name Porthos job Musketeer name Aramis job
  • 创建 COM 互操作类的实例

    我正在尝试使用 C 从我的程序中打开 CorelDRAW 到目前为止 我已经能够通过引用适当的 com 库并调用来做到这一点 CorelDRAW Application draw new CorelDRAW Application draw
  • Python - ElementTree - 不能在元素上使用绝对路径

    当我尝试运行以下代码时 我在 ElementTree 中收到此错误 SyntaxError cannot use absolute path on element 我的 XML 文档如下所示
  • JSON 迭代器的类型安全警告

    我的问题来自于从 JSONObject 获取迭代器 最简单形式的代码生成错误 String json client retrieveList JSONObject jsonList new JSONObject json Iterator
  • Java - 不可变数组线程安全

    我有一个关于 Java 内存模型的问题 这是一个呈现问题的简单类 public class ImmutableIntArray private final int array public ImmutableIntArray array n
  • 如何有效地从 std::set 中选择随机元素

    如何有效地从一个随机元素中选择一个std set A std set iterator is 不是随机访问迭代器 所以我不能像为一个随机选择的元素那样直接索引std deque or std vector I could获取从返回的迭代器s
  • 表达式 lambda 和语句 lambda 之间的区别

    表达式 lambda 和语句 lambda 之间有区别吗 如果是这样 有什么区别 在下面的链接中找到了这个问题 但无法理解答案 什么是 Lambda 表达式 C 面试题 http csharpinterviewfaq blogspot in
  • MFMailComposeViewController 未从视图中消失

    我有以下代码 当调用操作表上的按钮时会调用该代码 但是 当我按取消 然后删除草稿时 它只是收费并且不会关闭 我在应用程序的其他地方使用相同的代码 并从选择的表格视图单元格中调用它 并且它可以在那里找到 有什么想法为什么它在这里不起作用吗 当
  • 当变量超出范围时是否意味着它不存在?

    我不确定我是否理解作用域 超出作用域的变量 我正在使用 Ruby 是否存在于内存中的某处 或者它是否停止存在 我知道你无法访问它 说超出范围的变量不再存在是不准确的吗 也许这是一个哲学问题 如果您使用托管语言 那么您不会分配和取消分配内存
  • Google Oauth2 userinfo API 不返回用户名数据

    在过去的几个月里 我一直在使用 OAuth 登录后使用此 url 来检索用户的名称和信息 https www googleapis com oauth2 v1 userinfo alt json 这给了我以下格式的 JSON id 1234
  • openGL以伪3D视角绘制扭曲的精灵(图像)

    好吧 这将是一个很难解释的事情 我正在使用 AndEngine 我认为是 openGL 为 Android 制作一个非常基本的 伪 3d 赛车游戏 我不相信使用 AndEngine 真的与这个问题有任何关系 因为我直接访问 openGL 函
  • UILocalizedIndexedCollat​​ion 仅返回英文排序规则

    我正在尝试使用以下方法获取像联系人这样的本地化索引UILocalizedIndexedCollation 在 通讯录 中 当我更改语言时 索引会更改以匹配语言 然而sectionIndexTitles始终返回英文索引 我已经用我创建的演示应
  • ValueError:“10.0.0.0/24”似乎不是 IPv4 或 IPv6 网络

    我想在 Python 中使用 IP 子网 IP 地址 我使用以下命令创建了 Python 代码ipaddress模块 当我在 pycharm IDE 中运行代码时 它工作正常 但是当我在命令提示符下键入时运行python test py 它
  • 如何使用 BEM 正确设置元素的范围?

    给定以下 BEM 树结构 其中存在五个嵌套级别 collection main features top story byline author 根据 BEM 的命名约定 其中一个元素是块的一部分 并且在它所属的块之外没有任何意义 命名该元
  • 什么是“别名”流缓冲区?

    什么是 别名流缓冲区 我在评论中遇到了这个词answer https stackoverflow com questions 3318714 check if ostream object is cout or ofstream c 331
  • 在后台接收 UIPasteboard (generalPasteboard) 通知

    有办法做到这一点吗 我注册我的对象UIPasteboardChangedNotification在启动时 但是当将其发送到后台并打开 例如 Safari 并复制一些文本时 我的处理程序永远不会被调用 我现在只使用模拟器 我都用过 NSNot