mouseDown не обнаружен для моего NSImageView - PullRequest
1 голос
/ 10 августа 2011

Я искал ответы на этот вопрос, и хотя я сделал шаги, я все еще не могу получить метод mouseDown для вызова. То, что я хочу, - когда пользователь нажимает и удерживает изображение, оно должно распечатать «Мышь вниз!». (В конце концов, я хочу, чтобы пользователь щелкнул и удерживал изображение, чтобы воспроизвести звук, и когда он отпустит, звук остановится).

Вот что у меня есть. Мой заголовок:

@interface MyNSImageView : NSImageView <NSImageDelegate> {
}
@end

И мой класс:

@implementation MyNSImageView

- (void)mouseDown:(NSEvent *)event {

     if ([[self target] respondsToSelector:[self action]]) {
     [NSApp sendAction:[self action] to:[self target] from:self];
     }
    NSLog(@"Mouse Down!");
}

@end

Это выглядит правильно? Если так, то есть ли другие проблемы, которые могут помешать этому? Нет, что мне делать?

Спасибо, куча!

Ответы [ 2 ]

4 голосов
/ 29 ноября 2014

Вот мое решение:

Добавьте невидимую кнопку без рамки или заголовка над NSImageView.

:)

2 голосов
/ 10 августа 2011

Первая мысль: попробуйте реализовать acceptsFirstResponder и верните yes.Затем ваш делегат установит первый респондент для представления изображения ....

ОБНОВЛЕНИЕ:

Итак, я только что создал новый проект и добавил в него класс MyClass, который наследуется отNSImageView.реализован mouseDown:

-(void)mouseDown:(NSEvent *)theEvent
{
NSLog(@"Mouse Down");
}

и реализован initWithFrame:

- (id)initWithFrame:(NSRect)frameRect
{
    self = [super initWithFrame:frameRect];
    if (self) {
        NSURL *newURL = [[NSBundle mainBundle] URLForImageResource:@"ARandomImageIAddedtoProject"];
        NSImage *newImage = [[NSImage alloc] initWithContentsOfURL:newURL];
        [self setImage:newImage];
    }

return self;
}

Чтобы сделать вид видимым.

Затем я отредактировал nib-файл, добавив пользовательский классв окно, и изменив класс пользовательского класса на MyClass.Он работал нормально, так что я не знаю, что не так.

...