Implement UITouchDown for UIImageView
I know how to implement touchesBegan
for UIImageView
is it possible to implement UITouchDown开发者_StackOverflow中文版
for UIImageView
?(i know that i can use touchesBegan
instead of UITouchDown
but i want to implement UITouchDown
)
Use a UIButton.
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
[aButton setImage:someUIImage forState:UIControlStateNormal];
[aButton addTarget:self action:@selector(aMethod) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:aButton];
Alternative to UIButton (longer method)
A UIControl
implements user interactions and support for fine-grained user interactions already. You can combine the functionality of a UIImageView
and a UIControl
to achieve this since both are subclasses of UIView
.
To get this behavior, add an object of UIImageView as a subview to a UIControl
such that the image is fully covered. Then add a event handler to this control using addTarget:action:forControlEvents:
. Here's an example:
// assuming the image view object exists
UIImageView *anImageView = ..;
// create a mask that the covers the image exactly
UIControl *mask = [[UIControl alloc] initWithFrame:anImageView.frame];
// add the image as a subview of this mask
CGSize imageSize = anImageView.frame.size;
anImageView.frame = CGRectMake(0, 0, imageSize.width, imageSize.height);
[mask addSubview:anImageView];
// add a target-action for the desired control events to this mask
[mask addTarget:self action:@selector(someMethod:) forControlEvents:UIControlEventTouchUpInside];
// add the mask as a subview instead of the image
[self.view addSubview:mask];
You can use UITapGestureRecognizer
, instead of creating custom UIButton
.
You can't.
control events such as UIControlEventTouchDown
etc are available for UIControl's
child objects like UIButton
, UITextField
etc. UIImageView
is a UIView
and hence cannot generate control notifications.
You have to use touchesBegan
and co.
control events such as UIControlEventTouchDown etc are available for UIControl's child objects like UIButton, UITextField etc. UIImageView is a UIView and hence cannot generate control notifications.
精彩评论