Swift: NSDragOperationNone 在哪里?
Swift: Where Is NSDragOperationNone?
在 Objective-C 中,我可以通过各种 drag/drop 方法 return NSDragOperationNone
来表明我不想处理给定的拖动。 NSDragOperation
:
的 Objective-C 版本的 Apple 文档中明确列出了这一点
https://developer.apple.com/documentation/appkit/nsdragoperation?language=objc
但是,如果您查看 Swift 的页面,或者您查看 Apple Swift headers 中的 NSDragOperation
定义,则 .none
不是一个选项。
那么...如何拒绝 Swift 中的拖动操作?在这样的方法中:
func tableView(_ tableView: NSTableView, validateDrop info: NSDraggingInfo, proposedRow row: Int, proposedDropOperation dropOperation: NSTableView.DropOperation) -> NSDragOperation
注意:
1) 我明确处理 AppKit 和 macOS,而不是 UIKit 或 iOS。
2) 我意识到我可以用 0
的原始值初始化 NSDragOperation
,这是在 Objective-C 中赋予 NSDragOperationNone
的值,但这很脆弱。 Swift 拒绝拖拽的方法是什么?
您可能已经意识到这一点,但 NSDragOperation
是一个位掩码。每个 case 的值都是 2 的幂,你应该使用 |
在 Objective-C.
中屏蔽它们
在 Swift 中,NSDragOperation
被桥接以符合 OptionSet
并且您可以使用类似集合的语法来使用它们,如下所示:
let dragOp: NSDragOperation = [.copy, .link]
所以 none
操作只是一个空集:
let dragOp: NSDragOperation = []
使用[]。
.none 已弃用。参见 https://forums.developer.apple.com/thread/65205
在 Objective-C 中,我可以通过各种 drag/drop 方法 return NSDragOperationNone
来表明我不想处理给定的拖动。 NSDragOperation
:
https://developer.apple.com/documentation/appkit/nsdragoperation?language=objc
但是,如果您查看 Swift 的页面,或者您查看 Apple Swift headers 中的 NSDragOperation
定义,则 .none
不是一个选项。
那么...如何拒绝 Swift 中的拖动操作?在这样的方法中:
func tableView(_ tableView: NSTableView, validateDrop info: NSDraggingInfo, proposedRow row: Int, proposedDropOperation dropOperation: NSTableView.DropOperation) -> NSDragOperation
注意:
1) 我明确处理 AppKit 和 macOS,而不是 UIKit 或 iOS。
2) 我意识到我可以用 0
的原始值初始化 NSDragOperation
,这是在 Objective-C 中赋予 NSDragOperationNone
的值,但这很脆弱。 Swift 拒绝拖拽的方法是什么?
您可能已经意识到这一点,但 NSDragOperation
是一个位掩码。每个 case 的值都是 2 的幂,你应该使用 |
在 Objective-C.
在 Swift 中,NSDragOperation
被桥接以符合 OptionSet
并且您可以使用类似集合的语法来使用它们,如下所示:
let dragOp: NSDragOperation = [.copy, .link]
所以 none
操作只是一个空集:
let dragOp: NSDragOperation = []
使用[]。 .none 已弃用。参见 https://forums.developer.apple.com/thread/65205