#objective-c #macos #cocoa #events
Вопрос:
У меня есть мышь с 5 кнопками. Это левая, правая, колесная и 2 боковые кнопки (назад/вперед). Есть ли какой-нибудь способ проверить, была ли нажата боковая кнопка (например, «назад»)? Я изучаю документацию cocoa о событии мыши. На данный момент я знаю, что есть - (void)otherMouseDown:(NSEvent *)event;
метод, который вызывается всякий раз, когда была нажата другая (не правая/левая) кнопка. Но документация ничего не говорит о дополнительной информации о том, какая кнопка на самом деле была нажата. Как это преодолеть?
Комментарии:
1. Вы пробовали это
buttonNumber
свойствоNSEvent
?2. Также в некоторых случаях кнопки назад/вперед не будут вызывать это событие. Как и в случае с моим Logitech MX Master 3: это зависит от поставщика.
otherMouseDown
В моем случае срабатывает только нажатие на колесо.
Ответ №1:
-(void)scrollWheel:(NSEvent *)event;
метод NSОтветчика и так далее из NSViews
- (void)rightMouseDown:(NSEvent *)event;
таким же образом
- (void)otherMouseDown:(NSEvent *)event
как вы знаете
но также..
-(void)someAction:(id)sender
{
NSEvent *event = [NSApp currentEvent];
if (event.type == NSEventTypeLeftMouseUp ||
event.type == NSEventTypeLeftMouseDown)
{
if (event.clickCount == 2) {
// doubleClick
}
}
else if (event.type == NSEventTypeOtherMouseDown)
{
if (event.buttonNumber==4)
{
//i think first button is 0, so 5 should be 4.
}
}
}
В NSEvent.h AppKit есть все, что вам нужно, просто сначала проверьте type
событие, а затем выберите buttonNumber
и что бы вы ни выбрали