доступ к информации из пользовательского распознавателя жестов - PullRequest
0 голосов
/ 07 июля 2011

Я написал простой пользовательский распознаватель жестов, подобный этому:

@interface myRecognizer : UIGestureRecognizer {

    NSString * _name;
    CGPoint _startPoint;  
}

- (void)resetMe;
- (void)reset;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
@end

и я инициировал это так:

myRecognizer *recognizer = [[myRecognizer alloc] initWithTarget:self action:@selector(didRecognize_myRecognizer:)];
[self.view addGestureRecognizer:recognizer];
[recognizer release];

пока все хорошо. и у меня есть мое действие здесь:

-(void)didRecognize_myRecognizer:(UIGestureRecognizer*)theRecognizer
    {
        //do stuff here
    }

хорошо, пока все работает нормально, и все хорошо. Но вот мой вопрос, как я могу получить доступ к свойству _name, которое я создал в своем собственном жесте в // do do here arear? В принципе, я хотел бы сделать много жестов, но только один метод, используемый для действий, в зависимости от имени жеста. В режиме отладки я ясно вижу переменную _name, но если я пытаюсь написать код, подобный этому: theRecognizer._name, мне говорят, что в UIGEestureRecognizer отсутствует свойство «_name». если я изменю метод на это:

-(void)didRecognize_myRecognizer:(myRecognizer*)theRecognizer
    {
        //do stuff here
    }

происходит то же самое. и это не было бы хорошо в любом случае, потому что я хочу использовать метод для всех распознавателей жестов, которые я делаю. я невежественный? покажи мне свет!

1 Ответ

0 голосов
/ 07 июля 2011

Прежде всего, вы должны объявить метод доступа к переменной экземпляра. Точечная запись для свойств, а не переменных экземпляра. Объявите name как собственность.

Затем вы можете проверить класс распознавателя жестов и извлечь имя.

NSString * name = nil;
if ( [theRecognizer isMemberOfClass:[myRecognizer class]] ) {
    name = [(myRecognizer *)theRecognizer name];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...