【问题标题】:How to make my custom gesture recognizer class instances work simultaneously?如何让我的自定义手势识别器类实例同时工作?
【发布时间】:2012-12-13 17:07:05
【问题描述】:

您可以从此 libk 下载代码示例: https://github.com/mriddi/ExempleCustomGestureRecognizer.git

我像这样创建我的自定义手势识别器类:

@protocol MyGestureRecognizerDelegate <UIGestureRecognizerDelegate>
@optional
-(void) willDo;
@end

@interface MyGestureRecognizer: UIGestureRecognizer
{
    …
}
@property (nonatomic, assign) id <MyGestureRecognizerDelegate> delegate;
…
@end

@implementation MyGestureRecognizer
@synthesize delegate;
…
-(void) call{
    [delegate willDo];
}
…
@end

我的 ViewController 采用MyGestureRecognizerDelegate 协议。 在ViewController 我创建了我的类的实例:

MyGestureRecognizer * grFerst;
MyGestureRecognizer * grSecond;
grFerst.delegate=self;
grLeft.delegate=self;
[self.view addGestureRecognizer: grFerst];
[self.view addGestureRecognizer: grSecond];

我想让两个手势识别器实例同时工作。 我尝试添加到我的ViewController 方法

shouldRecognizeSimultaneouslyWithGestureRecognizer

但是这个方法从不调用,我用NSLog函数检查过。

请帮我解决这个问题(允许两个手势识别器同时工作)。

【问题讨论】:

  • 为什么需要委托?也许看看这个帖子stackoverflow.com/questions/13431806/…
  • 不,我需要委托。我的程序有 2 个控制轮(一个轮负责在 x 上移动光标,另一个负责移动光标 y 轴)。这是一种绘画应用程序。每个轮子都有自己的手势识别器。当我旋转轮子时,手势识别器会处理角度并将其传输给它的代表。接下来,委托将接收到的角度转换为点......我的意思是我的自定义手势识别器需要它自己的协议和委托。

标签: ios objective-c cocoa-touch delegates uigesturerecognizer


【解决方案1】:

也许你应该分配手势

MyGestureRecognizer * gesture = [[MyGestureRecognizer alloc] initWithTarget:self action:nil];
gesture.delegate = self;
[self.view addGestureRecognizer:gesture];

或者您可以使用控制轮作为目标并在其中进行所有角度计算。然后你委托给 mainViewController。

【讨论】:

  • 哎呀...我忘了说我有我的自定义初始化方法(它也调用超级初始化)。但是使用目标对我没有帮助,因为我只能调用目标的方法,并且不能向它发送 parapeters。
  • 我在 github 上创建了代码示例:github.com/mriddi/ExempleCustomGestureRecognizer.git
  • 您可以使用控制轮作为目标并在其中进行所有角度计算。然后你委托给 mainViewController。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
相关资源
最近更新 更多