Xcode: Как изменить изображение при прикосновении к изображению (в той же позиции)? - PullRequest
1 голос
/ 12 марта 2010

Просто я поместил изображение с помощью Interface Builder в UIView. Теперь я хочу запустить метод / функцию, когда касаюсь этого изображения, например, когда нужно загрузить другое изображение.

Мой код:

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

Ответы [ 4 ]

2 голосов
/ 12 марта 2010

Вам нужно обработать событие касания от вас 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"];
}
2 голосов
/ 12 марта 2010

То, что вы хотите, можно легко сделать, поместив UIButton вместо UIImage и изменив его фоновое изображение с помощью метода setBackgroundImage: forState: at обработчика событий TouchUpInside.

1 голос
/ 14 ноября 2012

другое решение:

в файле .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];
}

очень хорошо работает с моим кодом

0 голосов
/ 22 июня 2015

это работает со мной без создания подкласса, в .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"]];
}
...