вы можете проверить цвет пикселя rbga изображения и посмотреть, равно ли (= альфа-значение) == 0 (или <= aLowValue) ... как предложено Игорем Пчелко ... </p>
, нов вашем случае это может быть проще ... вы используете 2D-круг, так что просто проверьте, насколько щелчок пальца находится далеко от центра круга, и посмотрите, находится ли он вне его радиуса ... просто приложение теоремы Питагоры ...
РЕДАКТИРОВАТЬ:
хорошо, поэтому, если вы создаете новый класс для вашей подклассы кнопки UIButton:
в YourButton.h:
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@interface YourButton : UIButton {
}
@end
в YourButton.m просто добавьте этот код:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
CGPoint touchPoint = [touch locationInView:self];
NSLog(@"Touch x : %f y : %f", touchPoint.x, touchPoint.y);
float circleRadius = self.frame.size.height / 2; // considering a circle inscricted in a quadRect (width = height)
float deltaTouchOnCenterX = touchPoint.x - circleRadius;
float deltaTouchOnCenterY = touchPoint.y - circleRadius;
float touchDistanceFromCenter = sqrt((deltaTouchOnCenterX * deltaTouchOnCenterX) + (deltaTouchOnCenterY * deltaTouchOnCenterY) );
// or: float touchDistanceFromCenter = hypot(deltaTouchOnCenterX,deltaTouchOnCenterY);
NSLog(@"sqrt_val: %f", touchDistanceFromCenter);
NSLog(@"Touch on center x : %f y : %f", deltaTouchOnCenterX, deltaTouchOnCenterY);
if (touchDistanceFromCenter <= circleRadius) {
// your code here
NSLog(@"___ OK: You are inside the circle!!");
}
}