2010-03-12 4 views
1

간단히 말해 인터페이스 작성기로 UIView에 이미지를 배치했습니다. 이제 다른 이미지가로드 될 때와 같이 해당 이미지를 터치 할 때 메소드/함수를 실행하려고합니다.Xcode : 이미지에서 터치 할 때 이미지를 변경하는 방법 (같은 위치)?

내 코드 :

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

답변

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

touchView를 선언해야하나요? [window ...]를 제외하고 모두 붙여 넣어야합니까? (void) applicationDidFin .... 함수에서? 위의 코드 조각 –

+0

가 터치 뷰를 가정하고 이미지 뷰가 H 파일 선언 : //MyAppDelegate.h @interface의 MyAppDelegate : NSObject의 { UIWindow * 창; UIImageView * imageView; TouchSimpleView * touchView; // ... App Delegate뿐만 아니라 AnySeek TouchSimpleView 객체를 사용할 수 있습니다. 다른 위임 메서드를 만들 수도 있습니다 (예 : touch cordinates도 보내거나 touchesBegan ...뿐만 아니라 touchesMoved 또는 CanCed 이벤트도 처리 할 수 ​​있음). – Vladimir

2

당신이 쉽게있는 UIButton 대신있는 UIImage를 배치하고 그 배경 방법 setBackgroundImage을 사용하여 이미지를 변경하여 수행 할 수 원하는 : TouchUpInside 이벤트 처리기에서 : forState을.

+0

첫 번째 답변에 감사드립니다! 그러나 버튼은 내 계획 단계에서 잘 작동하지 않습니다. –

1

다른 솔루션 :

.H 파일은

의 장소IBOutlet UIImagView * imageButton;

가 .H 파일, 서브 클래스를 만들지 않고 나와 함께 작동
0

추가 UIImageView에

내 코드에서

-(IBAction)dosomething:(id)sender { 

    // your code 

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

작품 아주 미세하는 .m 파일에

-(IBAction)doSomething:(id)sender; 

#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"]]; 
} 
관련 문제