【问题标题】:Detect multi-touch gestures or drags with mouse in Mac OS X App在 Mac OS X 应用程序中检测多点触控手势或鼠标拖动
【发布时间】:2013-03-24 22:18:00
【问题描述】:

如何在 Xcode 中制作的 Mac OSX 应用程序中检测何时发生拖动或在触控板上滑动或魔术鼠标发生。

我所说的拖动是指用户点击了窗口的左边缘或右边缘,并且鼠标被按住,现在水平地从窗口的那一侧移开。

我正在尝试在左拖动或右滑(在魔术鼠标或触控板上)运行代码,并在右拖动或左滑(在魔术鼠标或触控板上)运行另一组代码。

以下是我所说的手势的一些定义:

左拖动是指单击并按住窗口右侧并且光标向左移动。

右拖动是指单击并按住窗口左侧并且光标向右移动。

顶部拖动是指窗口顶部、框架下方/交通灯所在的位置被向下拖动。

顶部滑动是从触控板或魔术鼠标顶部开始向下滑动。

在伪代码中我想要达到的效果是这样的:

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 */
}

【问题讨论】:

    标签: objective-c xcode macos multi-touch gesture


    【解决方案1】:

    Cocoa Event Handling Guide 是开始的地方

    尤其是处理手势事件的部分。

    他们告诉你如何处理:

    • 捏合动作(向内或向外)是表示缩小或缩放的手势 in(也称为放大)。
    • 两个手指在相反的半圆中移动是一个手势的意思 旋转。
    • 三根手指共同刷过触控板表面 方向是滑动手势。
    • 垂直或水平移动两个手指是一种滚动手势。

    还有更多...

    具体方法:

    - (void)swipeWithEvent:(NSEvent *)event
    

    来自 NSResponder 是您最好的选择。 T*his 事件通知接收器用户已经开始滑动手势。该事件将被发送到按键窗口中触摸下的视图。*


    取自同一文档,以下是如何处理滑动手势的示例:

    - (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];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 2020-11-13
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      相关资源
      最近更新 更多