iOS - Как прикоснуться к изображению на прозрачной части изображения?

Здесь я хочу получить прикосновение к событию действия кнопки при нажатии кнопки - B

и когда изображение касается (в видимой области изображения), метод жеста касания вызовет

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

Я пытался, но не смог получить действие кнопки на закрытой части:(

Кто-нибудь может мне помочь в этом?

Маскировка изображения

4 ответа

Решение

Поместите прозрачную кнопку над этой частью

Обновить

 -(void)singleTapImageview:(UITapGestureRecognizer *)gesture
 {
    NSLog(@"single-tap");
    CGPoint touchLocation = [gesture locationInView:self.imageViewParent];
    float x = touchLocation.x;
    float y = touchLocation.y;

    //Using gesture recogniser you can get the current position of touch

    UIImage* image = imageViewParent.image;
    CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
    UInt8 *pixels = (UInt8 *)CFDataGetBytePtr(data);

    UIGraphicsBeginImageContext(image.size);
    [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 1);
    CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [UIColor redColor].CGColor);
    int index = ((x + (y * (int)image.size.width)) * 4) + 3;
    CGFloat alpha = pixels[index];
    if (alpha == 0)
    {
        // call button acton
    }

}

Вы можете добавить новую прозрачную кнопку, которая будет перекрывать вашу часть изображения и существующую кнопку, имеющую рамку

CGRectMake(button.frame.origin.x, button.frame.origin.y, button.frame.size.width, button.frame.size.height);

Просто не перекрывайте кнопку с изображением таким образом. Это выглядит ужасно.

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

Вы можете решить эту проблему, написав хит-функцию для перекрывающейся кнопки.

В хит-тесте вы должны решить, какая кнопка была нажата, проверяя координаты.

http://developer.apple.com/library/ios/documentation/uikit/reference/uiview_class/uiview/uiview.html:

Другие вопросы по тегам