In the project, there are an UIView
myView and an UIImageView
myImage behinds the myView, views hierarchy:
UIWindow
|-- UIImageView (myImage)
|-- UIView (myView) [whole screen]
Then added a gesture recognizer to myImage in ViewController
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
tapGesture.numberOfTapsRequired = 1;
[myImage addGestureRecognizer:tapGesture];
But gesture doesn't affect myImage, myImage has setUserInteractionEnabled:YES
. It will only affect when myImage placed in front of myView, how can I solve this problem?
Your UIView
obviously intercept the touches before they can reach the UIImageView
.
You can either put your UIImageView
in front of your UIView
, or disable user interaction on the UIView
so it does not intercept the touches.
If you need finer grain over catching your touch events, you may either:
UIView
on top of the UIImageView
if it has to for design purposes (if it masks the UIImageView
a bit for example) but make it not catch events ( userInteractionEnabled = NO
), and use a different UIView
below the UIImageView
to actually catch the events outside the UIImageView
UIView
on top of the UIImageView
and keep it catching events ( userInteractionEnabled = YES
), but filter the events that pass thru it, by subclassing your UIView
and overriding either the pointInside:withEvent:
or the hitTest:withEvent:
method. For more information you should really read the dedicated Apple Programming Guide related to Event Handling .
my code:
UILongPressGestureRecognizer *press = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(hasLongPressed)];
[press setMinimumPressDuration:0.1f]; //1ms
press.delegate = (id)self;
[self.DGEMLogo addGestureRecognizer:press];
two properties are neccessary to do
1.) add the GestureRecognizer to your UIImageView (self.DGEMLogo) [self.DGEMLogo addGestureRecognizer:press];
2.) set your UIImage property Interaction enabled to TRUE
thats all.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.