UIButton не соприкасается даже в полной зоне

Я имею UIBUtton в UICollectionViewCell как показывают в изображении. Я установил действие touchUpInside в xib. Я установил фоновое изображение кнопки розового цвета и ярлыка желтого цвета. UIButton идет в верхней части этикетки. Теперь проблема в том, что UIButton если не получить сенсорное событие в розовой области, оно получит только сенсорное событие в оранжевой области. почему это так.

- (IBAction)checkButtonTap:(id)sender event:(id)event
{
    DLog(@"%s",__func__);
}


O скрытый вид перекрывает кнопку, из-за которой событие касания не дошло до кнопки.

3 ответа

Просто чтобы убедиться, что я понимаю вашу проблему, у вас есть UICollectionView в желтом и твоем UIbutton в розовом, правильно?

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

Даже если вы, наконец, найдете решение своей проблемы, уточните мой ответ, если вы хотите взаимодействовать с UIButton который не находится внутри фрейма его суперпредставления, вам может понадобиться реализовать метод - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event супервизии (здесь UICollectionViewCell):

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
if (!self.clipsToBounds && !self.hidden && self.alpha > 0) {
    for (UIView *subview in self.subviews.reverseObjectEnumerator) {
        CGPoint subPoint = [subview convertPoint:point fromView:self];
        UIView *result = [subview hitTest:subPoint withEvent:event];
        if (result != nil) {
            return result;
        }
    }
}

return nil;
}

(спасибо Ноам!)

К сожалению, был скрытый вид, который перекрывает кнопку, из-за которой событие касания не доходило до кнопки.

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget: собственное действие:@selector(imageTapped:)]; [название кнопки addGestureRecognizer: tapGesture]; buttonname.userInteractionEnabled = YES;

  • (IBAction) imageTapped: (UITapGestureRecognizer *) gestRecognizer { if(gestRecognizer.state == UIGestureRecognizerStateRecognized) { [buttonname становиться FirstResponder]; } }
Другие вопросы по тегам