• Target—Action


    题目:

    ⾃自定义view,实现点击事件。 

    不同的实例,点击效果不同:点击视图改变颜色、点击视图改变位置,点击视图修改⼤⼩。

    #import "AppDelegate.h"

    #import "TargetActionViewController.h"

    @interface AppDelegate ()

     

    @end

     

    @implementation AppDelegate

     

    - (void)dealloc

    {

        [_window release];

        [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];

        TargetActionViewController *rootVC = [[TargetActionViewController alloc]init];

        self.window.rootViewController = rootVC;

        [rootVC release];

        

        [self.window makeKeyAndVisible];

        return YES;

    }

     

     

     

     

     

    #import "TargetActionViewController.h"

    #import "TargetActionView.h"

    @interface TargetActionViewController ()

     

    @end

     

    @implementation TargetActionViewController

     

    - (void)viewDidLoad {

        [super viewDidLoad];

        // Do any additional setup after loading the view.

        TargetActionView *view1 = [[TargetActionView alloc]initWithFrame:CGRectMake(130, 100, 100, 100)];

        view1.backgroundColor = [UIColor magentaColor];

        [view1 addTarget:self Action:@selector(changeColor:)];

        [self.view addSubview:view1];

        

        TargetActionView *view2 = [[TargetActionView alloc]initWithFrame:CGRectMake(40, 250, 100, 100)];

        view2.backgroundColor = [UIColor greenColor];

        [view2 addTarget:self Action:@selector(changePosition:)];

        [self.view addSubview:view2];

        

        TargetActionView *view3 = [[TargetActionView alloc]initWithFrame:CGRectMake(230, 250, 100, 100)];

        view3.backgroundColor = [UIColor purpleColor];

        [view3 addTarget:self Action:@selector(changeSize:)];

        [self.view addSubview:view3];

        

        [view1 release];

        [view2 release];

        [view3 release];

    }

     

    - (void)changeColor:(TargetActionView *)touchView1

    {

        touchView1.backgroundColor = [UIColor colorWithRed:arc4random() % 256 / 255.0 green:arc4random() % 256 / 255.0 blue:arc4random() % 256 / 255.0 alpha:1.0];

    }

    - (void)changePosition:(TargetActionView *)touchView2

    {

        CGFloat minX = 0;

        CGFloat maxX = [[UIScreen mainScreen]bounds].size.width;

        CGFloat temp1 = arc4random() % (int)(maxX - minX + 1) + minX;

        

        CGFloat minY = 0;

        CGFloat maxY = [[UIScreen mainScreen]bounds].size.height;

        CGFloat temp2 = arc4random() % (int)(maxY - minY + 1) + minY;

        

        touchView2.center = CGPointMake(temp1, temp2);

    }

    - (void)changeSize:(TargetActionView *)touchView3

    {

        CGFloat minWidth = 38;

        CGFloat maxWidth = [[UIScreen mainScreen]bounds].size.width;

        CGFloat temp1 = arc4random() % (int)(maxWidth - minWidth + 1) + minWidth;

        

        CGFloat minHeight = 38;

        CGFloat maxHeight = [[UIScreen mainScreen]bounds].size.height;

        CGFloat temp2 = arc4random() % (int)(maxHeight - minHeight + 1) + minHeight;

        

        touchView3.bounds = CGRectMake(0, 0, temp1, temp2);

        

    }

     

     

     

     

     

    #import <UIKit/UIKit.h>

     

    @interface TargetActionView : UIView

     

    @property(nonatomic,retain)id target;

    @property(nonatomic,assign)SEL action;

     

    - (void)addTarget:(id)target Action:(SEL)action;

     

     

     

    @end

     

     

     

     

     

     

    #import "TargetActionView.h"

     

    @implementation TargetActionView

     

    - (void)dealloc

    {

        [_target release];

        [super dealloc];

    }

     

    - (void)addTarget:(id)target Action:(SEL)action

    {

        self = [super init];

        if (self) {

            _target = target;

            _action = action;

        }

    }

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    {

        [_target performSelector:_action withObject:self];

    }

     

    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

    {

        

    }

     

    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

    {

        

    }

     

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

  • 相关阅读:
    gulp安装
    ssh公钥自动登陆
    Laravel 依赖注入原理
    mac添加环境变量
    get和post的区别
    CPU进程与线程的关系和区别
    微信支付开发+{ping++}微信支付托管
    git学习笔记
    消除 activity 启动时白屏、黑屏问题
    转:android中APK开机自动运行
  • 原文地址:https://www.cnblogs.com/jx451578429/p/4759064.html
Copyright © 2020-2023  润新知