Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 读取多个拖放文件_Objective C_Macos_Osx Mountain Lion_Nspasteboard_Nsdragginginfo - Fatal编程技术网

Objective c 读取多个拖放文件

Objective c 读取多个拖放文件,objective-c,macos,osx-mountain-lion,nspasteboard,nsdragginginfo,Objective C,Macos,Osx Mountain Lion,Nspasteboard,Nsdragginginfo,我在主xib(main menu.xib)中有一个小窗口,其中有一个NSImageView控件,用于OSX应用程序。此视图控件有一个NSImageView子类,它应该接受用户带来的文件(拖放)。由于我没有使用Objective-C开发Mac应用程序的经验,我四处搜索,查看了一些来自苹果的示例项目,并获得了一些想法。好吧,简而言之,我刚刚复制了发布的代码。它起作用了。伟大的以下是一个简明的版本 - (NSDragOperation)draggingEntered:(id <NSDraggin

我在主xib(main menu.xib)中有一个小窗口,其中有一个NSImageView控件,用于OSX应用程序。此视图控件有一个NSImageView子类,它应该接受用户带来的文件(拖放)。由于我没有使用Objective-C开发Mac应用程序的经验,我四处搜索,查看了一些来自苹果的示例项目,并获得了一些想法。好吧,简而言之,我刚刚复制了发布的代码。它起作用了。伟大的以下是一个简明的版本

- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender{
    return NSDragOperationCopy;
}

- (NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender{
}

- (void)draggingExited:(id <NSDraggingInfo>)sender{
}

- (BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender{
    return YES; 
}

- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
    NSPasteboard *pboard = [sender draggingPasteboard];
    if ([[pboard types] containsObject:NSURLPboardType]) {
        NSURL *fileURL = [NSURL URLFromPasteboard:pboard];
        NSLog(@"Path: %@", [self convertPath:fileURL]); // <== That's just what I need
    }
    return YES;
}

- (NSString *)convertPath:(NSURL *)url {
    return url.path;
}
-(nsdragooperation)draggingented:(id)发送方{
返回NSDRAGO操作副本;
}
-(NSDRAGO操作)draggingUpdated:(id)发送方{
}
-(无效)拖动退出:(id)发送方{
}
-(BOOL)prepareForDragOperation:(id)发送方{
返回YES;
}
-(BOOL)performDragOperation:(id)发送方{
NSPasteboard*pboard=[发送方拖动粘贴板];
如果([[pboard types]包含对象:NSURLBoard Type]){
NSURL*fileURL=[NSURL URLFromPasteboard:pboard];

NSLog(@“Path:%@,[self-convertPath:fileURL]);//将performDragOperation:方法更改为:

- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
    NSPasteboard *pboard = [sender draggingPasteboard];
    if ([[pboard types] containsObject:NSURLPboardType]) {
        NSArray *urls = [pboard readObjectsForClasses:@[[NSURL class]] options:nil];
        NSLog(@"URLs are: %@", urls); 
    }
    return YES;
}
-(BOOL)性能跟踪操作:(id)发送方{
NSPasteboard*pboard=[发送方拖动粘贴板];
如果([[pboard types]包含对象:NSURLBoard Type]){
NSArray*URL=[pboard readobjectsforlasses:@[[NSURL class]]选项:nil];
NSLog(@“URL为:%@”,URL);
}
返回YES;
}
雨燕风格:

override func performDragOperation(sender: NSDraggingInfo) -> Bool 
{
    if let board = sender.draggingPasteboard().propertyListForType(NSFilenamesPboardType) as? NSArray 
    {              
        for imagePath in board
        {
            if let path = imagePath as? String
            {
                 println("path: \(path)")
            }
        }                
        return true               
    }
    return false
}

非常感谢。它很有效。下面的主题似乎也能帮助我。这个答案是金色的。我在从我的粘贴板接收多个NSURL时遇到了巨大的困难。我总是被限制为一个。这解决了它。