delegate的练习

//在RootViewController.h里面遵守协议

#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController

@end

-----------------------------------<>-------------------------

//RootViewController.m

#import "RootViewController.h"

#import "TouchView.h"

@interface RootViewController ()<TouchViewDelegate>{

TouchView *touch;

}

@end

@implementation RootViewController

- (void)viewDidLoad {

[super viewDidLoad];

touch = [[TouchView alloc] initWithFrame:CGRectMake(10, 65, 100, 100)];

touch.backgroundColor = [UIColor redColor];

touch.delegate = self;

[self.view addSubview:touch];

[touch release];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

#pragma mark - TouchViewDelegate

-(void)canTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

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

}

@end

----------------------------<自己定义的TouchView, 继承于UIView>-----------------------------

#import <UIKit/UIKit.h>

@protocol TouchViewDelegate <NSObject>//制订协议, 协议名 : 类名 + delegate

-(void)canTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;//制定协议里面的方法

@end

@interface TouchView : UIView

@property (nonatomic, retain) id<TouchViewDelegate>delegate;

@end

----------------------------------------------<>-------------------------------------------

#import "TouchView.h"

@implementation TouchView

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

//让代理执行本应该TouchView完成的方法

if ([_delegate respondsToSelector:@selector(canTouchesEnded:withEvent:)]) {

[_delegate canTouchesEnded:touches withEvent:event];//把参数传进来

}

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

}

@end

时间: 2024-09-28 22:15:54

delegate的练习的相关文章

代理Delegate的小应用(代理日期控件和下拉框)

前言 在平时关于表格一类的的控件使用中,不可避免需要修改每个Item的值,通过在Item中嵌入不同的控件对编辑的内容进行限定,然而在表格的Item中插入的控件始终显示,当表格中item项很多的时候,会影响表格的美观和用户的体验.此时Delegate代理就派上了用场,通过Delegate可以使得Item的控件在编辑状态才显示,提高了用户的体验满意度. 效果展示 1.展示状态: 2.编辑状态   设计思路 这类效果的实现主要使用了QItemDelegate类,QItemDelegate类为数据项It

iOS delegate, 代理/委托与协议.

之前知知道iOS协议怎么写, 以为真的跟特么java接口一样, 后来发现完全不是. 首先, 说说应用场景, 就是当你要用一个程序类, 或者说逻辑类, 去控制一个storyboard里面的label, 发现如果直接用 UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];//由storyboard根据myView的storyBoardID来

Delegate成员变量和Event的区别

上周五有同事问了我一个问题:Delegate和Event有什么区别?具体来说在设计一个类的时候,声明一个事件(Event)和声明一个Delegate类型的成员变量有啥区别. 我的第一反应是没啥区别,虽然从语法看起来不一样,但从代码希望达成的效果来看是一致的,本质都是回调函数.当然区别是肯定有的,我能给我的理由是两个:首先从与COM交互操作时,event对应COM接口中的事件:其次VS的编译环境对定义event提供了更加便捷的支持,可以为其自动生成回调函数的框架. 翻了翻MSDN,并没有直接描述两

复习扩展方法 涉及委托,这里我使用自定义委托类型 public delegate bb MyFunc&lt;in T,out bb&gt; (T arg)

using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text;using System.Threading.Tasks; namespace ConsoleApplication8{ public static class ListExt { public delegate bb MyFunc<in T, out bb>(T arg); public sta

ios中的代理与协议(delegate)

源码地址 :http://download.csdn.net/download/swanzhu/9016861 一.理解协议与代理 协议 协议的格式:@protocol关键字:协议的声明 例如 @protocol CustomAlertViewDelegate <NSObject> <methods>协议的方法 @optional //此关键字下声明的方法,是可选实现的方法. @required //此关键字声明的方法为,必须实现的方法,如果不实现,编译会报警告,程序运行崩溃. /

在Unity中使用事件/委托机制(event/delegate)进行GameObject之

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 一对多的观察者模式机制有什么缺点? 如果你对如何在Unity中使用事件/委托机制还不太了解,建议您查看我的前一篇文章:[Unity3D技巧]在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 在前一篇博客里面,我们写到

iOS 中KVC、KVO、NSNotification、delegate 总结及区别

iOS 中KVC.KVO.NSNotification.delegate 总结及区别 1.KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性.而不是通过调用Setter.Getter方法访问.KVO 就是基于 KVC 实现的关键技术之一. Demo: @interface myPerson : NSObject { NSString*_name; int      _age; int      _height; int      _w

UIScrollView的delegate方法妙用之让UICollectionView滑动到某个你想要的位置

一个UICollectionView有好多个cell,滑动一下,谁也不知道会停留在哪个cell,滑的快一点,就会多滑一段距离,反之则会滑的比较近,这正是UIScrollview用户体验好的地方. 如果想要UICollectionView停留到某个cell的位置,可以用 - (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPos

Delegate(委托)

在前面lambda章节中稍微提了一下委托,今天这章就让我们来深究一下委托. 委托的本质是一种类,他是继承MulticastDelegate类的. 而声明委托的关键字的delegate,如:public delegate void NoReturnNoParaOutClass(); 但是刚才也讲了委托一种类,那按照类的声明,我们应该可以这样声明一个委托. public class  NoReturnNoParaOutClass: System.MulticastDelegate { } 只不过由于

Android源代码之DeskClock (三) Proxy/Delegate Application 框架应用

一.概述 当项目有加壳子,插件化或热修复等需求的时候,能够使用Proxy/Delegate Application框架的方式,在正常的模式中,一个程序一般仅仅有一个Application入口,而Proxy/Delegate模式中须要有两个Application,原程序的Application改为Delegate Application,再新加一个Proxy Application,由Proxy Application 提供一系列的个性化定制,再将所有的context和context相关的引用所有