IBAction не срабатывает при добавлении viewDidLoad - PullRequest
0 голосов
/ 23 мая 2011

У меня есть несколько IBActions, прикрепленных к кнопкам UIB.IBActions работают нормально, пока я не добавлю следующий код:

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"View Did Load");
    [self addGestureRecognizersToView:drawImage];
}

После того, как я добавлю этот фрагмент кода, IBActions не сработают.Кнопки UIB подсвечиваются, когда я их касаюсь, но ни один из кодов IBAction не срабатывает.

Вот мой код addGestureRecognizers:

- (void)addGestureRecognizersToView:(UIImageView *)theView {
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
    [panGesture setMaximumNumberOfTouches:2];
    [panGesture setMinimumNumberOfTouches:1];
    //panGesture.delegate = drawImage;
    [theView addGestureRecognizer:panGesture];
    [panGesture release];

    UITapGestureRecognizer *doubleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
    [doubleFingerTap setNumberOfTapsRequired:2];
    [self.view addGestureRecognizer:doubleFingerTap];
    [doubleFingerTap release];

    UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
    [singleFingerTap setNumberOfTapsRequired:1];
    [self.view addGestureRecognizer:singleFingerTap];
    [singleFingerTap release];
}

Если я закомментирую код singleFingerTap, он работает.Я предполагаю, что я не должен использовать alloc, так как я уже выделил это однажды в doubleFingerTap?

Любые идеи о том, что я мог бы упустить здесь?

Ответы [ 2 ]

1 голос
/ 23 мая 2011

Нажатие одним пальцем мешает нормальному поведению кнопки. Вы должны убедиться, что прикосновения проходят беспрепятственно.

[singleFingerTap setCancelsTouchesInView:NO];
0 голосов
/ 23 мая 2011

Похоже, что UITapGestureRecognizer имеет значение , перехватывающее нажатия , которые в противном случае обрабатывались бы кнопками UIB.

Вы можете использовать gestureRecognizer:shouldReceiveTouch::

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    return (touch.view != self.button1 && 
            touch.view != self.button2);
}

Кроме того, вы можете взломать цепочку респондента .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...