У меня есть пользовательский класс представления. Внутри моего контроллера просмотра я добавляю распознаватель жестов Tap на этом объекте представления. Теперь, в обработчике жестов tap, я настраиваю свойство на моем объекте представления, которое я пытаюсь извлечь в drawRect класса my view. Теперь, неожиданно, когда я печатаю объекты вида в своем «handleGesture» & «drawRect», я получаю два разных объекта. Из-за этого мое условие if внутри drawRect не получает выполнение. Что может быть причиной?Обработка UITapGestureRecognizer в пользовательском представлении
Он не входит в состояние UIGestureRecognizerStateBegan. Он всегда входит в UIGestureRecognizerStateEnded.
// Adding Gesture in my view
MyCustomView *customView= [[[MyCustomView alloc] init] autorelease];
UIGestureRecognizer *GestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
[customView addGestureRecognizer:GestureRecognizer];
[GestureRecognizer release];
// Handling tap on my view
- (void)handleGesture:(UIGestureRecognizer *)GestureRecognizer; {
MyCustomView *aView= (MyCustomView *)GestureRecognizer.view;
switch (iGestureRecognizer.state) {
case UIGestureRecognizerStateBegan:
NSLog(@"Began");
[aView setNeedsDisplay];
aView.touchDown = YES;
break;
case UIGestureRecognizerStateEnded:
NSLog(@"Ended");
aView.touchDown = NO;
[aView setNeedsDisplay];
break;
default:
break;
}
}
// Inside my view class
- (void)drawRect:(CGRect)iRect {
if (self.touchDown) {
// Do something here
}
}
Если вы хотите сделать немного рефакторинга, вы можете создать собственное представление для своего собственного распознавателя жестов и реализацию handleGesture. Таким образом, он может обрабатывать всю эту логику внутри представления, и вам может не понадобиться флаг touchDown, который вы используете. Возможно, вы могли бы даже устранить необходимость переопределить drawRect: – picciano
Да ... Я так и думал, но это не помогло. Причина этого заключается в том, что я перерисовываю таблицу внутри моего «handleGesture», которая создает другой объект моего пользовательского представления, а затем все это испортится. – Abhinav
Ах, тем более разумнее распознать жест от контроллера к виду. Несомненно, в любом случае вам не следует создавать дополнительные экземпляры пользовательского представления. – picciano