Я использую фрагмент кода, который обнаружил, чтобы передавать сенсорные события через прозрачные части UIImageView
. Я подклассифицирую UIImageView
и добавляю это:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
unsigned char pixel[1] = {0};
CGContextRef context = CGBitmapContextCreate(pixel,
1, 1, 8, 1, NULL,
kCGImageAlphaOnly);
UIGraphicsPushContext(context);
[self.image drawAtPoint:CGPointMake(-point.x, -point.y)];
UIGraphicsPopContext();
CGContextRelease(context);
CGFloat alpha = pixel[0]/255.0;
BOOL transparent = alpha < 0.01;
if(transparent){
return NO;
} else {
return YES;
}
}
Пока что он отлично работает в моей версии для iPad. Однако в моей версии для iPhone я установил рамки изображения равными половине фактического размера изображения (self.image.frame.size.width/2
). Этот код странным образом мешает моим жестам панорамирования, и если я касаюсь левого верхнего угла изображения, я не могу получить доступ к жесту панорамирования, но могу получить доступ к крайнему правому нижнему углу, после фактического изображения в прозрачную зону.
Удаление кода возвращает жест панорамирования в нормальное состояние. Тем не менее, я все еще хотел бы сохранить возможность игнорировать прикосновения к прозрачным деталям. Кто-нибудь знает, какая часть этого кода мешает моим точкам касания или какая-то другая причина, по которой он так себя ведет?
Спасибо