Вы можете получить доступ к жесты, которые вы добавляете к объекту, с помощью метода gestureForName:
, который возвращает объект UIGestureRecognizer
. Оттуда вы можете взаимодействовать с этим распознавателем жестов и напрямую изменять его свойства.
Чтобы переключить включение/выключение распознавателя жестов, все, что вам нужно сделать, это изменить значение его enabled
.
следующие работы для меня:
#import "C4WorkSpace.h"
@implementation C4WorkSpace {
UIGestureRecognizer *gesture;
C4Shape *square, *circle;
}
-(void)setup {
square = [C4Shape rect:CGRectMake(0, 0, 100, 100)];
square.center = self.canvas.center;
circle = [C4Shape ellipse:square.frame];
circle.center = CGPointMake(square.center.x, square.center.y + 200);
[self listenFor:@"touchesBegan" fromObject:circle andRunMethod:@"toggle"];
[self.canvas addObjects:@[square, circle]];
[square addGesture:PAN name:@"thePan" action:@"move:"];
gesture = [square gestureForName:@"thePan"];
}
-(void)toggle {
gesture.enabled = !gesture.isEnabled;
if(gesture.enabled == YES) square.fillColor = C4GREY;
else square.fillColor = C4RED;
}
@end
ключ часть этого примера заключается в следующем:
[square addGesture:PAN name:@"thePan" action:@"move:"];
gesture = [square gestureForName:@"thePan"];
Уведомление, в реализации есть UIGestureRecognizer
переменная называется gesture
. Что мы делаем на второй строке, находим жест PAN
, связанный с объектом square
и сохраняем ссылку на него.
Затем, когда мы переключаем коснувшись круг мы делаем следующее:
gesture.enabled = !gesture.isEnabled;
То есть, если этот жест включен затем отключить его (и наоборот).
Вы можете узнать больше о UIGestureRecognizer Class Reference
Спасибо! Это решение отлично поработало! :) –