2

Xcodeで作成されているMacOSXアプリで、ドラッグが発生しているのか、トラックパッドまたはマジックマウスがスワイプされているのかをどのように検出できますか。

ドラッグとは、ユーザーがウィンドウの左端または右端をクリックし、マウスを押したままにして、ウィンドウのその側面から水平方向に離れることを意味します。

左ドラッグまたは右スワイプ(magic-mouseまたはtrack-pad)でコードを実行し、右ドラッグまたは左スワイプ(magic-mouseまたはtrack-pad)で別のコードセットを実行しようとしています。

これが私が話しているジェスチャーのいくつかの定義です:

左ドラッグとは、ウィンドウの右側をクリックして押したままにし、カーソルを左に移動したときのことです。

右ドラッグとは、ウィンドウの左側をクリックして押したままにし、カーソルを右に移動したときのことです。

トップドラッグとは、ウィンドウの上部、フレームの下、信号機がある場所を下にドラッグすることです。

トップスワイプは、トラックパッドまたはマジックマウスの上部から始まり、下に下がるスワイプです。

擬似コードでは、私が達成しようとしていることは次のようなものです。

if( right-drag || left-swipe ){
    /*run code*/
}
else if( left-drag || right-swipe ){
    /* run different code */
}
else if( top-drag || top-swipe ){
    /* run other code */
}
else{
   /* do nothing */
}
4

1 に答える 1

2

ココアイベントハンドリングガイドは始める場所です

特にジェスチャイベントの処理に関する部分。

彼らはあなたに対処する方法を教えてくれます:

  • ピンチ動作(インまたはアウト)は、ズームアウトまたはズームイン(拡大とも呼ばれます)を意味するジェスチャです。
  • 反対の半円を移動する2本の指は、回転を意味するジェスチャです。
  • トラックパッドの表面を共通の方向に3本の指でブラッシングするのは、スワイプジェスチャです。
  • 垂直または水平に移動する2本の指はスクロールジェスチャです。

もっと...

特に方法:

- (void)swipeWithEvent:(NSEvent *)event

NSResponderからが最善の策です。このイベントは、ユーザーがスワイプジェスチャを開始したことを受信者に通知します。イベントは、キーウィンドウのタッチの下でビューに送信されます。*


同じドキュメントから抜粋した以下は、スワイプジェスチャを処理する方法の例です。

- (void)swipeWithEvent:(NSEvent *)event {
    CGFloat x = [event deltaX];
    CGFloat y = [event deltaY];
    if (x != 0) {
        swipeColorValue = (x > 0)  ? SwipeLeftGreen : SwipeRightBlue;
    }
    if (y != 0) {
        swipeColorValue = (y > 0)  ? SwipeUpRed : SwipeDownYellow;
    }
    NSString *direction;
    switch (swipeColorValue) {
        case SwipeLeftGreen:
            direction = @"left";
            break;
        case SwipeRightBlue:
            direction = @"right";
            break;
        case SwipeUpRed:
            direction = @"up";
            break;
        case SwipeDownYellow:
        default:
            direction = @"down";
            break;
    }
    [resultsField setStringValue:[NSString stringWithFormat:@"Swipe %@", direction]];
    [self setNeedsDisplay:YES];
}
于 2013-03-24T22:45:28.830 に答える