在MouseUp上显示NSSharingServicePicker

Dov*_*Dov 10 macos cocoa

我正在为我的应用添加分享(针对Mavericks,10.9),我想这样工作:

  1. 用户点击分享按钮
  2. 光标变为十字准线
  3. 用户拖动选择他想要分享的内容
  4. 显示NSSharingServicePicker,允许用户选择要与之共享的服务

我使用的是完成这个-mouseDown:,-mouseDragged:-mouseUp:事件.mouseDown开始选择,mouseDragged提供有关所选区域的反馈,然后mouseUp完成拖动,显示选择器.但每一次,我都把它写到控制台:

2014-06-25 00:13:45.111 App[31401:303] Warning: -[NSSharingServicePicker showRelativeToRect: ofView: preferredEdge:] should not be called on mouseUp
Please configure the sender with -[NSControl sendActionOn:NSLeftMouseDownMask];
Run Code Online (Sandbox Code Playgroud)

我不明白为什么那会是一个问题,除非你通过点击鼠标按钮显示它.我应该忽略这条消息吗?我试着用它显示dispatch_asyncdispatch_after尝试,并得到它到事件的调用外面跑,但他们没有工作.我想我可以忽略它,但这是否会让贬值的大门敞开?

小智 4

我知道这已经晚了一年,但是
我也遇到了同样的问题。经过一番研究后,我得到了这个答案。在我实现此代码之前,我的按钮会旋转一段时间,然后返回并出现与您相同的错误。当我现在单击共享按钮时,它不再滞后,并且不会返回任何错误。将其插入到您的应用程序的awakeFromNib方法中:[yourShareButtonName sendActionOn:NSLeftMouseDownMask];。您的代码应如下所示:

- (void)awakeFromNib {
    [yourShareButtonName sendActionOn:NSLeftMouseDownMask];
}
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助!