为UIImageView实现UITouchDown [英] Implement UITouchDown for UIImageView
问题描述
我知道如何实现 touchesBegan
UIImageView
是否可以为 UIImageView
实现 UITouchDown
?(我知道我可以使用 touchesBegan
而不是 UITouchDown
但我想实现 UITouchDown
)
is it possible to implement UITouchDown
for UIImageView
?(i know that i can use touchesBegan
instead of UITouchDown
but i want to implement UITouchDown
)
推荐答案
使用UIButton。
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
[aButton setImage:someUIImage forState:UIControlStateNormal];
[aButton addTarget:self action:@selector(aMethod) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:aButton];
替代UIButton(更长的方法)
A UIControl
已经实现了用户交互和对细粒度用户交互的支持。你可以结合 UIImageView
和 UIControl
的功能来实现这一点,因为它们都是的UIView
。
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
.
要获得此行为,请将UIImageView的对象作为子视图添加到 UIControl
,以使图像完全覆盖。然后使用 addTarget:action:forControlEvents:
。这是一个例子:
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];
这篇关于为UIImageView实现UITouchDown的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!