NSButtonは、接近しすぎるクリックを無視します。
ゆっくりクリックすると、すべてのクリックが確認されますが、速度を上げ始めると、ある時点で、mouseDown:イベントの送信が停止します。その後、速度を落とすと、ある時点ですべてのクリックが再び伝播し始めます。
このアプリのいくつかのボタンでは、ハンマーが発生し、許可されるべきではない理由はありません。
setIgnoresMultiClick:を試しましたが、動作は変わりません。
NSButtonをサブクラス化し、mouseDown:をオーバーライドして、ボタン数を1に設定した場合を除いて、イベントオブジェクトの複製を再作成してみました。
まだサイコロはありません。
誰かがここでトリックを知っていますか?
SEMI-解決済み(...欠点はありますが)。
これを行うにはおそらく半ダースの方法がありますが、ボタンハンマーを有効にした方法は次のとおりです...
@interface HammerClickWindow : NSWindow {;;}
@end
@implementation HammerClickWindow
- (void)sendEvent:(NSEvent *)event
{
if ( event.type == NSLeftMouseDown )
{
[super sendEvent:[NSEvent mouseEventWithType:event.type location:event.locationInWindow modifierFlags:event.modifierFlags timestamp:event.timestamp windowNumber:event.windowNumber context:event.context eventNumber:event.eventNumber clickCount:1 pressure:event.pressure]];
}
}
@end
(A)ウィンドウ内のマウスダウンの100%に影響を与えず、(B)特定のボタンにのみ影響を与えることができる場合にこれを行う方法を誰かが知っているなら...それは素晴らしいことです。