1

简单地说,我在 UIView 中放置了带有 Interface Builder 的图像。现在我想在触摸该图像时运行一个方法/函数,例如当应该加载另一个图像时。

我的代码:

- (void)touchesended:(NSSet*) touches withEvent:(UIEvent *)event 
{
    // UITouch *touch = [touch anyObject];
    bild_1_1.image = [UIImage imageNamed:@"t_1_4.jpg"];
}
4

4 回答 4

2

您可以通过放置 UIButton 而不是 UIImage 并使用方法 setBackgroundImage:forState: 在 TouchUpInside 事件处理程序更改其背景图像来轻松完成您想要的操作。

于 2010-03-12T11:09:22.887 回答
2

您需要处理来自 UIView 的触摸事件。为此,您应该创建 UIView 的子类并添加您对touchesBegan:withEvent:方法的实现,这里是最简单的示例:

//  TouchSimpleView.h
@interface TouchSimpleView : UIImageView {
    id  delegate;
}
@property(retain) id delegate;
@end

@interface NSObject(TouchSimpleView)
-(void)didTouchView:(UIView *)aView;
@end 

//  TouchSimpleView.m
#import "TouchSimpleView.h"
@implementation TouchSimpleView
@synthesize delegate;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"touchesBegan!!! ");
    if ( delegate != nil && [delegate respondsToSelector:@selector(didTouchView:)] ) {
        [delegate didTouchView:self];
    } 
    [super touchesBegan:touches withEvent:event];
}
@end

然后,您可以在要处理触摸时使用此类的视图,例如:

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
    [window makeKeyAndVisible];
    touchView = [[TouchSimpleView alloc] initWithFrame:CGRectMake(50, 50, 200, 300)];
    touchView.delegate = self;
    [window addSubview:touchView];

    imageView =[[UIImageView alloc] initWithFrame:touchView.frame];
    imageView.image = [UIImage imageNamed:@"image1.png"];
    [touchView addSubview:imageView];
}

-(void)didTouchView:(UIView *)aView{
    NSLog(@"view touched, changing image");
    imageView.image = [UIImage imageNamed:@"image2.png"];
}
于 2010-03-12T17:10:20.400 回答
1

另一种解决方案:

在 .h 文件中

放置一个 IBOutlet UIImagView *imageButton;

-(IBAction)doSomething:(id)sender;

在 .m 文件中

-(IBAction)dosomething:(id)sender {

    // your code

   [imageButton setImage:[UIImage imageNamed:@""t_1_4.jpg"} forState:UIControlStateNormal];
}

在我的代码上工作得很好

于 2012-11-14T16:21:04.420 回答
0

它适用于我而无需创建子类,在 .h 文件中添加 UIImageView

#import <UIKit/UIKit.h>
@interface YourClassName : UIViewController{
    IBOutlet UIImageView *wallpaper;
}
@property (nonatomic, retain) IBOutlet UIImageView *wallpaper;
@end

然后在 .m 你可以使用你的方法

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [wallpaper setImage:[UIImage imageNamed: @"image.png"]];
}
于 2015-06-22T09:49:45.600 回答