我正在向我的应用添加分享(针对Mavericks,10.9),我想这样工作:
我正在使用-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_async
和dispatch_after
来尝试让它在事件调用之外运行,但它们不起作用。我想我可以忽略它,但这是否会打开贬值的大门?
答案 0 :(得分:3)
我知道这是迟了一年但是,
我有同样的问题。经过一番研究,我回答了这个问题。在我实现此代码之前,我的按钮会旋转一段时间,然后返回您遇到的相同错误。当我现在单击我的共享按钮时,它不再滞后,并且不会返回任何错误。将其插入到您应用的awakeFromNib
方法中:[yourShareButtonName sendActionOn:NSLeftMouseDownMask];
。
这就是您的代码应该是这样的:
- (void)awakeFromNib {
[yourShareButtonName sendActionOn:NSLeftMouseDownMask];
}
我希望这有帮助!