我正在尝试创建自定义swipe gesture recognizer
来设置允许的角度和距离。
到目前为止它工作得很好,但在视图控制器中需要很多代码。所以我的问题是,有可能以某种方式传递方法调用,如:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
在我的手势识别器对象的视图控制器中,这样我就不必写这样的东西
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.swipeGestureRecognizer touchesBegan:touches withEvent:event];
}
进入我的视图控制器。我认为UIGestureRecognizer
中的构建以某种方式做到了,但我无法弄清楚它是如何工作的。
我真的很感激你的帮助。
[编辑]
通用示例:我有一个对象A,它创建一个对象B.A有一个方法c有时被调用。我想要实现的是当A中的c被调用时,调用B的方法d。所以以某种方式转发或传递此方法调用。
具体示例:每次触摸屏幕时,我的视图控制器都会调用以下方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
但我实际上希望我的GestureRecognizer对象处理这些信息,所以我在GestureRecognizer对象中使用相同的方法,并且我希望每次调用视图控制器中的对应方时调用此方法。
答案 0 :(得分:1)
子类UIGestureRecognizer并创建一个名为CustomGestureRecognizer的类。 它的.m文件看起来像这样
@implementation CustomGestureRecognizer
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// do your code here
}
@end
在子类中的某些位置,您必须将识别器的状态更改为
UIGestureRecognizerStateRecognized
当注册当前手势时,否则更改为
UIGestureRecognizerStateFailed
现在,在想要使用此识别器的视图控制器中执行:
CustomGestureRecognizer * recognizer = [[CustomGestureRecognizer alloc] initWithTarget:self action:@selector(handleChange:)];
recognizer.delegate = self;
[self.view addGestureRecognizer:recognizer];
此处给出详细解释Apple doc,在子类化下。
答案 1 :(得分:0)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[self.swipeGestureRecognizer touchesBegan:touches withEvent:event];
}
以上将以递归调用结束,并且您的程序将在某个时间点崩溃。