使用UIButton,您可以看到用户点击了按钮(图像变为灰色)。
我喜欢UIImageView中的这种行为,并想知道如何做到这一点 另一种可能的方法是使用UIButton,让它在视觉上反应(变成灰色) 但假装触摸没有发生。(因为我需要将触摸事件传递给superview或nextresponder)。
谢谢。
我实际上最终继承了UIButton和 实现touchesBegan /移动/结束
- (void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event
{
[super touchesBegan: touches withEvent: event];
[self.nextResponder touchesBegan: touches withEvent: event];
}
首先触动开始突出显示,
第二个是我需要的正确处理。
奇怪的是,打电话给两个人开始会很好......
答案 0 :(得分:1)
我得到了你问题的答案。
通过Interface Builder在您的视图上放置一个UIImageView,并将其设置为.h中的IBOutlet,并将其命名为“img”。并在.m
中编写此代码- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
if (CGRectContainsPoint([img frame], [touch locationInView:self.view])) {
img.alpha = 0.5;
[UIView beginAnimations:@"frame" context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationDelegate:self];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
img.alpha = 1.0;
[UIView commitAnimations];
NSLog(@"Image Touched");
}
}
答案 1 :(得分:1)
UIImageView中有一个名为 highlightedImage 的属性。通过设置此属性,UIImageView将在触摸时更改为此图像。
答案 2 :(得分:0)
你的第二个选择听起来最好。只需使用UIButton并设置图像或背景图像。如果您继承UIButton(它是UIView的子类),您可以捕获所有触摸事件并将它们传递给基础视图,如下所示:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
// returning nil will ignore touches on this view
return nil;
}