Убедитесь, что ваш класс наследуется от NSWindow
и соответствует протоколу <NSWindowDelegate>
.В противном случае это просто метод с именем mouseDown
, и никто его никогда не вызовет.
Обновление: Измените файл заголовка так, чтобы он выглядел следующим образом:
@interface test : NSWindow <NSWindowDelegate> {
}
Другими словами, не помещайте прототип mouseDown
в определение интерфейса или где-либо еще в файле .h
.
В вашей реализацииfile (.m
), укажите только метод:
- (void) mouseDown:(NSEvent*)someEvent {
NSLog(@"It worked!");
}
Предполагая, что на устройстве включена регистрация (вы уверены, что можете прочитать NSLog
вывод из другого места вашей программы?), выдолжен увидеть "Это сработало!"напечатано там.
Я ни в коем случае не эксперт obj-C, но я думаю, что, поместив прототип mouseDown
в определение интерфейса, вы в основном создавали свой собственный mouseDown
метод, который скрывалнастоящий.Это указывало компилятору, что он не должен вызывать ваш метод mouseDown
при щелчке окна.