Данные давления доступны, если устройство поддерживает его (т. Е. Трекпады с сенсорным усилием). Форсированные сенсорные трекпады поставляются на MacBooks примерно с 2015 года. Принудительное касание также доступно на Magic Trackpad.
This blog post имеет способ обнаружения устройств прикосновения к силе, хотя я не пробовал.
Моя машина MacBook Pro 2016 с сенсорным трекпадом. Я могу получить давление, используя этот код:
[self.window trackEventsMatchingMask:NSEventMaskPressure
timeout:NSEventDurationForever
mode:NSEventTrackingRunLoopMode
handler:^(NSEvent * _Nonnull event, BOOL * _Nonnull stop) {
NSLog(@"%f", event.pressure);
}];
Выход:
2018-02-09 18:16:10.986036-0800 forcetouch[4587:4164200] 0.437820
2018-02-09 18:16:10.993772-0800 forcetouch[4587:4164200] 0.457504
2018-02-09 18:16:11.001883-0800 forcetouch[4587:4164200] 0.476486
2018-02-09 18:16:11.010654-0800 forcetouch[4587:4164200] 0.494812
2018-02-09 18:16:11.017738-0800 forcetouch[4587:4164200] 0.512497
2018-02-09 18:16:11.028129-0800 forcetouch[4587:4164200] 0.529556
2018-02-09 18:16:11.033769-0800 forcetouch[4587:4164200] 0.546021
2018-02-09 18:16:11.042117-0800 forcetouch[4587:4164200] 0.561905
2018-02-09 18:16:11.049869-0800 forcetouch[4587:4164200] 0.577240
Однако, я вижу, вы используете кран событий.
Я пробовал ваш код, и когда я проверяю kCGMouseEventPressure
, я получаю 1
. Когда я проверяю event.pressure
, я также получаю 1
. Поэтому я получаю значение, когда вы этого не делаете - я полагаю, у вас нет силового оборудования? Но я не получаю фактическое значение давления.
Я не уверен, как получить это, используя кран событий.
Это работает для меня на MacBook Pro 2016 года. Обратите внимание, что этот аппарат имеет сенсорный трекпад. Я не то, что это вернет на машине без сенсорного трекпада. Однако, надеюсь, это даст вам еще несколько идей.
Force touch for developers
NSEvent - pressure
Просто ссылка, которую я нашел .. может или не может быть полезным .. https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/ Классы/NSEvent_Class/Reference/Reference.html # // apple_ref/occ/instm/NSEvent/tangentialPressure | + (NSEvent *) mouseEventWithType: (NSEventType) тип местоположения: (NSPoint) модификатор местоположенияFlags: (NSUInteger) flags timestamp: (NSTimeInterval) time windowNumber: (NSInteger) windowNum context: (NSGraphicsContext *) context eventNumber: (NSInteger) eventNumber clickCount: (NSInteger) clickNumber давление: (плавающее) давление – davidcondrey
это самое близкое решение https://github.com/jnordberg/FingerMgmt – pravdomil