xcode - Swift - 如何让 NSSharingServicePicker 在特定按钮中弹出?

标签 xcode swift macos

我正在学习 Swift 并为 OS X 创建我的第一个项目。当用户按下按钮“shareButton”时,我希望 NSSharingServicePicker 弹出窗口显示在该按钮上。

我用这段代码创建 NSSharingServicePicker 对象:

var text = "Hello, world!"
var share = NSSharingServicePicker(items: [text])

现在,我必须如何自定义此代码以显示弹出窗口?

share.showRelativeToRect(rect: NSRect, ofView: NSView, preferredEdge: NSRectEdge)

我试过了,但它显示的弹出窗口位置错误,控制台显示错误。

let rect = shareButton.frame
let edge : NSRectEdge = NSRectEdge.MaxY
let view = shareButton

share.showRelativeToRect(rect, ofView: view, preferredEdge: edge)

“NSSharingServicePicker showRelativeToRect: ofView: preferredEdge:] 不应在 mouseUp 上调用 请使用 -[NSControl sendActionOn:NSLeftMouseDownMask]; 配置发件人;“

最佳答案

首先,要摆脱 NSLeftMouseDownMask 警告,请在应用启动时更改按钮的行为。例如,将这段代码放在 viewDidLoad() 中。

youShareButton.sendAction(on: NSLeftMouseDownMask)

这就是我在按钮上显示选择器 View 所做的

let shareItems = [aURL]
let sharingPicker:NSSharingServicePicker = NSSharingServicePicker.init(items: shareItems)

let sharingPicker:NSSharingServicePicker = NSSharingServicePicker.init(items: shareItems)
sharingPicker.show(relativeTo: yourShareButton.bounds, of: yourShareButton, preferredEdge: .minY)

关于xcode - Swift - 如何让 NSSharingServicePicker 在特定按钮中弹出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35819866/

相关文章:

ios - Alamofire:在展开可选值时意外发现 nil

swift 3 : Convert a String to an Array

ios - "oldValue"和 "newValue"无法识别 willSet/didSet 中的默认参数名称

swift - PFObject 子类获取 "Cannot convert value of type ' Match' 到预期参数类型 '@noescape (AnyObject) throws -> Bool'“错误

android - 让 Android 模拟器与 iPhone 热点一起工作

iphone - MKAnnotationView viewForAnnotation 从未调用过

ios - 方法 decidePolicyForNavigationAction 从未调用过,WKWebView Swift

ios - 在 UIImageView 中剪裁的圆角

linux - Mac OS 商店键盘布局的位置在哪里?

java - 如何在 JavaFX 应用程序内部等待 JFrame 线程完成?