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"];
}
touchView를 선언해야하나요? [window ...]를 제외하고 모두 붙여 넣어야합니까? (void) applicationDidFin .... 함수에서? 위의 코드 조각 –
가 터치 뷰를 가정하고 이미지 뷰가 H 파일 선언 : //MyAppDelegate.h @interface의 MyAppDelegate : NSObject의 { UIWindow * 창; UIImageView * imageView; TouchSimpleView * touchView; // ... App Delegate뿐만 아니라 AnySeek TouchSimpleView 객체를 사용할 수 있습니다. 다른 위임 메서드를 만들 수도 있습니다 (예 : touch cordinates도 보내거나 touchesBegan ...뿐만 아니라 touchesMoved 또는 CanCed 이벤트도 처리 할 수 있음). –
Vladimir