如何在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 */
}
答案 0 :(得分:2)
特别是关于处理手势事件的部分。
他们会告诉您如何处理:
以及更多......
特别是方法:
- (void)swipeWithEvent:(NSEvent *)event
来自NSResponder的是您最好的选择。 T *他的事件通知接收者用户已经开始轻扫手势。该事件将在关键窗口中触摸下发送到视图。*
取自同一个文档,下面是一个关于如何处理滑动手势的示例:
- (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];
}