mouseDown не обнаружен для моего NSImageView

Я искал ответы на этот вопрос, и хотя я сделал шаги, я все еще не могу вызвать метод 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

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

Огромное спасибо!


person Moonlight293    schedule 09.08.2011    source источник


Ответы (2)


Первая мысль: попробуйте реализовать 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;
}

Чтобы вид был виден.

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

person Daniel    schedule 09.08.2011
comment
Я только что сделал это, но все еще ничего не распечатывается. Я сделал две кнопки - не будет ли это мешать initFirstResponder? (хотя у меня только один первый ответивший) - person Moonlight293; 10.08.2011
comment
Ха, может быть, я понял, почему. Мой файл xib не обновляется, когда я его изменяю. Я использую Xcode 4 - есть идеи, почему он не работает? - person Moonlight293; 10.08.2011
comment
Я не знаю. Вы сохраняете файл xib после его редактирования? У вас есть разрешение на редактирование файла? Кроме этого я не знаю, что не так. Я обновляю свой ответ своим тестом. - person Daniel; 11.08.2011
comment
Решено - я редактировал не тот файл xib... -headdesk- Огромное спасибо. - person Moonlight293; 12.08.2011

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

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

:)

person Nix Wang    schedule 29.11.2014