2014-09-08 7 views
3

명령 줄 도구에서 작동하는 몇 가지 코드가 있습니다. 이제는 터미널과 경로를 사용하기 위해 Drop-Applet으로 만들고 싶었습니다. 디버거가 연결되어있는 한 일부 파일을 삭제하려고하는데 매력처럼 작동합니다.스위프트 끌어서 놓기가 Xcode 외부에서 작동하지 않습니다.

지금까지는 좋았지 만 Xcode 출력 디렉토리에서 직접 시작하면 드래그/드롭이 허용되지 않는 것 같습니다. (원점으로 되돌아가는 파일의 애니메이션).

class dragView : NSView, NSDraggingDestination { 

required init(coder: NSCoder) { 
    super.init(coder: coder) 
} 

override init(frame: NSRect) { 
    super.init(frame: frame) 
    let types = [NSFilenamesPboardType, NSURLPboardType] 
    registerForDraggedTypes(types) 
} 

override func drawRect(dirtyRect: NSRect) { 
    super.drawRect(dirtyRect) 
    NSColor.whiteColor().set() 
    NSRectFill(dirtyRect) 
} 

override func draggingEntered(sender: NSDraggingInfo!) -> NSDragOperation { 
    return NSDragOperation.Copy 
} 


override func draggingUpdated(sender: NSDraggingInfo!) -> NSDragOperation { 
    return NSDragOperation.Copy 
} 

override func performDragOperation(sender: NSDraggingInfo!) -> Bool { 
    let pboard: NSPasteboard = sender.draggingPasteboard() 

    let array : [String] = pboard.propertyListForType(String(NSFilenamesPboardType)) as [String] 
    for item in array 
    { 
... 

무엇이 여기에 있습니까?

답변

0

끌기 유형을 init (coder :) 함수에 등록해야하므로 코드가 작동하지 않습니다. 이 코드는 here

+1

가 대단히 감사 스위프트 3

import Cocoa class DropView : NSView { required init?(coder: NSCoder) { super.init(coder: coder) let types = [NSFilenamesPboardType, NSURLPboardType] register(forDraggedTypes: types) self.wantsLayer = true self.layer?.backgroundColor = NSColor.white.cgColor } override func draw(_ dirtyRect: NSRect) { super.draw(dirtyRect) // Drawing code here. } override func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation { return .copy } override func performDragOperation(_ sender: NSDraggingInfo) -> Bool { guard let pasteboard = sender.draggingPasteboard().propertyList(forType: "NSFilenamesPboardType") as? NSArray, let path = pasteboard[0] as? String else { return false } //GET YOUR FILE PATH !! Swift.print("FilePath: \(path)") return true } } 

더 유용한 예에서 잘 작동합니다! – Andreas

관련 문제