在MouseUp上显示NSSharingServicePicker

时间:2014-06-25 13:20:32

标签: macos cocoa

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

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

    我正在使用-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];
    

    我不明白为什么那会是一个问题,除非你是通过点击鼠标按钮显示它。我应该忽略这条消息吗?我尝试使用dispatch_asyncdispatch_after来尝试让它在事件调用之外运行,但它们不起作用。我想我可以忽略它,但这是否会打开贬值的大门?

1 个答案:

答案 0 :(得分:3)

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

- (void)awakeFromNib {
    [yourShareButtonName sendActionOn:NSLeftMouseDownMask];
}

我希望这有帮助!