AppDelegate.h
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
AppDelegate.m
#import "AppDelegate.h"
#import "MainViewController.h"
@implementation AppDelegate
- (void)dealloc
{
[_window release];
_window = nil;
[super dealloc];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
MainViewController *main = [[MainViewController alloc] init];
[_window setRootViewController:main];
[main release];
[self.window makeKeyAndVisible];
return YES;
}
#import <UIKit/UIKit.h>
@interface MainViewController : UIViewController
@end
MainViewController.m
#import "MainViewController.h"
#import "ImageView.h"
@interface MainViewController ()
@end
@implementation MainViewController
- (void)dealloc
{
[super dealloc];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
for (int i = 0; i < 6; i ++) {
for (int j = 0; j < 4; j ++) {
ImageView *touch = [[ImageView alloc] initWithFrame:CGRectMake(40 + 60 * j, 70 + 60 * i, 50, 50)];
[touch addTarget:self selector:@selector(touchAction:)];
[touch setImage:[UIImage imageNamed:@"dog.png"]];
touch.backgroundColor = [UIColor blackColor];
touch.tag = 100 + i * 10 + j + 1;
[self.view addSubview:touch];
[touch release];
}
}
}
//事件
- (void)touchAction:(id)sender
{
// [self.view setBackgroundColor:[UIColor yellowColor]];
ImageView *aTouch = (ImageView *)sender;
int headTag = aTouch.tag - 10;
int leftTag = aTouch.tag - 1;
int rightTag = aTouch.tag + 1;
int bottomTag = aTouch.tag + 10;
ImageView *head = (ImageView *)[self.view viewWithTag:headTag];
ImageView *left = (ImageView *)[self.view viewWithTag:leftTag];
ImageView *right = (ImageView *)[self.view viewWithTag:rightTag];
ImageView *bottom = (ImageView *)[self.view viewWithTag:bottomTag];
[self changeColor:aTouch];
[self changeColor:head];
[self changeColor:right];
[self changeColor:bottom];
[self changeColor:left];
}
- (void)changeColor:(ImageView *)aTouch
{
if (aTouch.image == [UIImage imageNamed:@"dog.png"]) {
[aTouch setImage:[UIImage imageNamed:@"q.png"]];
} else{
[aTouch setImage:[UIImage imageNamed:@"dog.png"]];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end
#import <UIKit/UIKit.h>
@interface ImageView : UIImageView
{
id _target;
SEL _selector;
}
- (void)addTarget:(id)target selector:(SEL)selector;
@end
#import "ImageView.h"
@implementation ImageView
- (void)dealloc
{
[super dealloc];
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
self.userInteractionEnabled = YES;
}
return self;
}
- (void)addTarget:(id)target selector:(SEL)selector
{
_target = target;
_selector = selector;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
//target调用属于他的方法selector,并且将self当成参数传递给selector
[_target performSelector:_selector withObject:self];
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
}
*/
@end