2012-12-19 37 views
6

Tôi có một số NSImageView trong ứng dụng Mac của tôi, nơi người dùng có thể kéo thả các đối tượng như .png hoặc .pdf, để lưu trữ chúng vào User Shared Defaults, hoạt động tốt. Bây giờ tôi muốn thiết lập một hành động khi người dùng nhấp đúp vào các NSImageView này, nhưng có vẻ hơi khó khăn (tôi không gặp rắc rối với NSTableView, nhưng 'setDoubleAction' không có sẵn cho NSImage, và tấn các câu trả lời (đây hoặc với google) liên quan đến hành động NSImageView của trỏ đến thực hiện một NSButton thay vì NSImageView, vì vậy điều đó không giúp)NSImageView nhấp đúp vào hành động

Dưới đây là một phần của AppDelegate.h tôi:

@interface AppDelegate : NSObject <NSApplicationDelegate>{ 

    (...) 

    @property (assign) IBOutlet NSImageView *iconeStatus; 

    (...) 

@end 

và đây là một phần của AppDelegate của tôi.m:

#import "AppDelegate.h" 

@implementation AppDelegate 

(...) 

@synthesize iconeStatus = _iconeStatus; 

(...) 

- (void)awakeFromNib { 

    (...) 

[_iconeStatus setTarget:self]; 
[_iconeStatus setAction:@selector(doubleClick:)]; 

    (...) 

} 

(...) 

- (void)doubleClick:(id)object { 
     //make sound if that works ... 
     [[NSSound soundNamed:@"Basso"] play]; 

} 

Nhưng điều đó không hiệu quả.

Bất cứ ai có thể cho tôi biết cách dễ nhất để làm điều này là gì?

Trả lời

8

Bạn cần phải phân lớp NSImageView và thêm các phương pháp sau đây để thực hiện của lớp con của bạn:

- (void)mouseDown:(NSEvent *)theEvent 
{ 
    NSInteger clickCount = [theEvent clickCount]; 

    if (clickCount > 1) { 
     // User at least double clicked in image view 
    } 
} 
Các vấn đề liên quan