(iphone)如何显示imageview被点击为uibutton?

时间:2011-03-15 10:18:25

标签: iphone uiimageview uibutton

使用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];
}

首先触动开始突出显示,
第二个是我需要的正确处理。

奇怪的是,打电话给两个人开始会很好......

3 个答案:

答案 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;
}