2013-08-12 2 views
1

Чтение документации here.Как отключить/перевести жесты в C4ios?

Я знаю, как успешно установить PAN жесты для C4Object. Как бы отключить жест PAN?

, используя ...

[object setUserInteractionEnabled:NO] 

... отключает все жесты, включая TAP событий и ...

object.gestureRecognizers = NO 

... не позволяет мне переинициализировать PAN жесты.

Если бы кто-нибудь мог поделиться со мной, как отключить PAN жесты (переключение PAN вкл./Выкл.) Без каких-либо других событий жестов было бы весьма полезно.

ответ

1

Вы можете получить доступ к жесты, которые вы добавляете к объекту, с помощью метода 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

+0

Спасибо! Это решение отлично поработало! :) –

Смежные вопросы