Question

Il suffit, je l'ai placé une image avec le constructeur d'interface dans un UIView. Maintenant, je veux exécuter une méthode / fonction lorsque je touche cette image, par exemple quand une autre image doit être chargée.

Mon code:

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

La solution

Vous devez gérer l'événement touche de vous UIView. Pour ce faire, vous devez créer la sous-classe de UIView et ajoutez votre réalisation de touchesBegan: withEvent: méthode , ici exemple le plus simple:

//  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

Ensuite, vous pouvez utiliser des vues de cette classe lorsque vous souhaitez traiter des touches, par exemple:

- (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"];
}

Autres conseils

Qu'est-ce que vous voulez peut être facilement fait en plaçant UIButton au lieu de UIImage et de changer son image d'arrière-plan en utilisant la méthode setBackgroundImage: forState:. Au gestionnaire d'événements TouchUpInside

Une autre solution:

dans le fichier .h

place un IBOutlet UIImagView * ImageButton;

et

-(IBAction)doSomething:(id)sender;

dans le fichier .m

-(IBAction)dosomething:(id)sender {

    // your code

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

fonctionne à mon code très bien

il travaille avec moi sans créer de sous-classe, dans le fichier .h vous ajoutez UIImageView

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

puis à .m vous pouvez utiliser votre méthode

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [wallpaper setImage:[UIImage imageNamed: @"image.png"]];
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top