大佬教程收集整理的这篇文章主要介绍了可可 – NSStatusItem自定义视图NSDraggingDestination仅在点击项目后才能工作,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一个gif来展示这个问题:
代码从上面的例子(或Xcode Project):
import Cocoa class AppDelegate: NSObject,NSApplicationDelegate { func applicationDidFinishLaunching(aNotification: Nsnotification?) { let vc = StatusItemViewController() } func applicationWillTerminate(aNotification: Nsnotification?) { // Insert code here to tear down your application } } class StatusItemView: NSView,NSDraggingDesTination { public var image = NSImage(named: "NSQuickLookTemplate") public var action: SELEctor? public var target: AnyObject? private var statusItem: NSStatusItem init(statusItem: NSStatusItem) { let itemWidth = statusItem.length let itemHeight = NSStatusBar.systemStatusBar().thickness self.statusItem = statusItem super.init(frame: NSRect(x: 0.0,y: 0.0,width: itemWidth,height: itemHeight)) var types = [NSURLPboardType,NSStringPboardType] as [String] for type in NSImage.imagePasteboardTypes() { types.append(type as String) } self.registerForDraggedTypes(types) statusItem.view = self } override func drawRect(dirtyRect: NSRect) { let iconSize = image.size let bounds = self.bounds let iconX = round((bounds.width - iconSize.width)/2) let iconY = round((bounds.height - iconSize.height)/2) image.drawAtPoint(NSPoint(x: iconX,y: iconY),fromRect: NSRect(),operation: NSComposiTingOperation.CompositeOverlay,fraction: 1.0) } override func mouseDown(theEvent: NSEvent!) { if let _action = self.action { NSApp.sendAction(_action,to: self.target,from: self) } } override func performDragOperation(sender: NSDraggingInfo!) -> Bool { println("Performed") return true } override func draggingEntered(sender: NSDraggingInfo!) -> NSDragOperation { return NSDragOperation.Copy } override func draggingupdated(sender: NSDraggingInfo!) -> NSDragOperation { println("Dragging") return NSDragOperation.Copy } override func draggingExited(sender: NSDraggingInfo!) { println("Exit") } } class StatusItemViewController: NSObject { private var statusBarItem: NSStatusItem? private var statusItemView: StatusItemView! init() { self.statusBarItem = NSStatusBar.systemStatusBar().statusItemWithLength(24) super.init() if let item = statusBarItem { statusItemView = StatusItemView(statusItem: item) statusItemView.target = self statusItemView.action = "doAction:" } else { println("Unable to create status item,terminaTing self") NSApplication.sharedApplication().terminate(nil) } } deinit { NSStatusBar.systemStatusBar().removeStatusItem(statusBarItem) statusBarItem = nil statusItemView = nil } func doAction(sender: AnyObject!) { println("Here is where one would perform the action") } }
以上是大佬教程为你收集整理的可可 – NSStatusItem自定义视图NSDraggingDestination仅在点击项目后才能工作全部内容,希望文章能够帮你解决可可 – NSStatusItem自定义视图NSDraggingDestination仅在点击项目后才能工作所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。