use*_*890 25 iphone objective-c uigesturerecognizer
我需要使用UISwipeGestureRecognizer(例如,UISwipeGestureRecognizerDirectionRight和UISwipeGestureRecognizerDirectionLeft)捕获两个不同的滑动手势.当我使用addGestureRecognizer方法添加两个不同的识别器时,只有最后添加的识别器有效.我已经读过我需要实现gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizerDelegate协议方法,但没有任何效果.
任何人都可以帮助捕获两个或多个相同的手势的简单示例?谢谢!
use*_*890 34
这真的很容易:
首先我们应该创建实现UIGestureRecognizerDelegate协议的类:
@interface MyGestureDelegate : NSObject <UIGestureRecognizerDelegate>
Run Code Online (Sandbox Code Playgroud)
@implementation MyGestureDelegate
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
return YES;
}
并像这样使用它:
UISwipeGestureRecognizer *swipeGestureLeft = [[UISwipeGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSwipeGestureLeft:)];
[self.view addGestureRecognizer:swipeGestureLeft];
swipeGestureLeft.direction = UISwipeGestureRecognizerDirectionLeft;
[swipeGestureLeft release];
UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSwipeGesture:)];
swipeGesture.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:swipeGesture];
MyGestureDelegate *deleg = [[MyGestureDelegate alloc] init];
[swipeGesture setDelegate:deleg];
[swipeGesture release];
iro*_*key 20
答案:"嗯,快速查看文档..."来自凤凰绝对不行!
他正在设置一个掩码,然后使用相同的变量进行测试,好像识别器清除它并设置一个位.它存储,正如他从文档中正确引用的那样:
滑动的允许方向
sender.direction
Run Code Online (Sandbox Code Playgroud)
将简单地返回您最初设置的面具,在他的示例中,永远不会解决单一方向!
UISwipeGestureRecognizerDirectionRight == 1
UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft == 3
Run Code Online (Sandbox Code Playgroud)
另外,对于大多数情况,您不需要:
以下适用于我:
UISwipeGestureRecognizer* swipe;
swipe = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeL)] autorelease];
swipe.direction = UISwipeGestureRecognizerDirectionLeft;
[view addGestureRecognizer:swipe];
swipe = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeR)] autorelease];
swipe.direction = UISwipeGestureRecognizerDirectionRight; // default
[view addGestureRecognizer:swipe];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35515 次 |
| 最近记录: |