书签 分享 收藏 举报 版权申诉 / 32
上传文档赚钱

类型[工学]IOS编程-TargetAction-实验指导课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3571449
  • 上传时间:2022-09-19
  • 格式:PPT
  • 页数:32
  • 大小:1.20MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《[工学]IOS编程-TargetAction-实验指导课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    工学 IOS 编程 TargetAction 实验 指导 课件
    资源描述:

    1、内容回顾内容回顾 代码示例:这样的代码会不会产生内存泄露?-(void)viewDidUnload self.statusText=nil;将self.statusTextz的引用计数减一(发送releas),-将Nil的引用计数加一!-(void)dealloc statusText release;super dealloc;内容回顾内容回顾 看一下属性声明:#import interface Button_FunViewController:UIViewController UILabel*statusText;property(nonatomic,retain)IBOutlet UIL

    2、abel*statusText;-(IBAction)buttonPressed:(id)sender;end内容回顾内容回顾 代码示例:void setStatusText:(UILabel*)aLabel aLabel retain;statusText release;statusText=aLabel;本章授课内容本章授课内容vTarget-ActionTarget-Actionv课课堂堂实验实验Target-ActionvTarget-Action:Target-Action:Target-Action是一种设计模式,在这个设计模式中,一个对象保留了一些必要信息,当某种事件发生时将消

    3、息发送给另外一个对象。这些必要的信息包含两部分的内容:一部分是一个Selector,用来标识要调用的Action;另一部分是Target,也就是接受消息的对象。Target-ActionTarget-Action 按钮包含了target和actionNSButtonaction=seed:Foo-(void)seed:(id)sendertargetTarget-Action 当用户和控件交互时,控件就会给它们的target发送action消息。例如:点击一个按钮,将会给它的target发送action消息:Action方法接受一个参数:发送者。该参数可以让接收者知道是哪一个控件发送了这个ac

    4、tion消息。NSButtonaction=seed:Foo-(void)seed:(id)sendertargetseed:-(IBAction)toggleFoo:(id)sender BOOL isOn=sender state;Target-Action Target-Action是UIControl类中定义的一种机制,凡是UIControl子类的对象都可以通过设置target和action来通过消息触发某个操作。Target-Action UIControl类的声明interface UIControl:UIView NSMutableArray*_targetActions;CGP

    5、oint _previousPoint;CFAbsoluteTime _downTime;-(void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;-(void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;-(NSArray*)actionsForTarget:(id)target forControlEvent:(UICont

    6、rolEvents)controlEvent;-(void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent*)event;-(void)sendActionsForControlEvents:(UIControlEvents)controlEvents;endTarget-ActionNSButtonNSMutableArray*_targetActions;targetactionidmethodidmethodidmethodidmethodobjobjobjobjTarget-Action UIControlEventsenu

    7、m UIControlEventTouchDown =1 0,UIControlEventTouchDownRepeat =1 1,UIControlEventTouchDragInside =1 2,UIControlEventTouchDragOutside =1 3,UIControlEventTouchDragEnter =1 4,UIControlEventTouchDragExit =1 5,UIControlEventTouchUpInside =1 6,UIControlEventTouchUpOutside =1 7,UIControlEventTouchCancel =1

    8、8,;Target-ActionNSButtonaction=buttonPressed:Button_FunViewController-(void)seed:(id)sendertargetNSButtonaction=buttonPressed:targetNSLabeltextTarget-Action 通过代码设置Target和Action 可以通过UIControl的方法触发操作以响应事件:SEL sel;sel=selector(buttonPressed:);btn addTarget:someObjectWithbuttonPressedMethod Action:sel f

    9、orEvent:UIControlEventTouchUpInside;(void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent*)event;target PerformSelector:action withObject:self;本章授课内容本章授课内容vTarget-ActionTarget-Actionv课课堂堂实验实验课堂实验课堂实验v实验实验目的:目的:了解通过代码创建对象的流程 理解Target-Action模式课堂实验课堂实验v创创建工程:建工程:创建基于视图的工程 将工程名命名为DyButton课堂实验课堂实验

    10、v修改代修改代码码:打开DyButtonViewController.cpp修改修改viewDidLoad方法:viewDidLoad方法会在viewController将与之关联的视图加载到内存种后调用,负责进一步的初始化工作。-(void)viewDidLoad super viewDidLoad;UIButton*btn=UIButton buttonWithType:UIButtonTypeRoundedRect;btn.frame=CGRectMake(110,225,100,30);btn setTitle:Click forState:UIControlStateNormal;s

    11、elf.view addSubview:btn;课堂实验课堂实验课堂实验课堂实验 当button被手动创建出来后,无法执行任何自定义操作。所以,我们必须设定button的target和action.对于应用程序来说,控件的target一般都是与控件所在视图的viewController的子类的对象,但也可以是其他的自定义类型的对象。课堂实验课堂实验 添加操作方法:打开文件DyButtonViewController.h文件,添加操作方法的声明#import interface DyButtonViewController:UIViewController-(IBAction)buttonPre

    12、ssed:(id)sender;end课堂实验课堂实验 打开DyButtonViewController.cpp实现操作函数:-(IBAction)buttonPressed:(id)sender int x=arc4random()%220;int y=arc4random()%450;UIButton*btn=UIButton buttonWithType:UIButtonTypeRoundedRect;btn.frame=CGRectMake(x,y,100,25);btn setTitle:Click forState:UIControlStateNormal;self.view ad

    13、dSubview:btn;btn addTarget:self action:selector(buttonPressed:)forControlEvents:UIControlEventTouchUpInside;课堂实验课堂实验课堂实验课堂实验v继续修改当前的应用程序使控件能够响应拖动事件。事件就是一个对象用来保存硬件监测到的用户输入。当系统监测到用户输入后就将用户输入的信息封装成UIEvent的对象,发送给当前处于活动状态的应用程序。课堂实验课堂实验课堂实验课堂实验 UIEvent种又包含了好多UITouch对象,用来存储触摸事件的详细内容课堂实验课堂实验 继续修改DyButtonVie

    14、wController.h文件,添加新的操作函数的声明:#import interface DyButtonViewController:UIViewController-(IBAction)buttonPressed:(id)sender;-(IBAction)buttonMoved:(id)sender forEvent:(UIEvent*)event;end课堂实验课堂实验 修改DyButtonViewController.cpp文件实现新的操作函数:-(IBAction)buttonMoved:(id)sender forEvent:(UIEvent*)event NSSet*set=

    15、event allTouches;UITouch*touch=set allObjects objectAtIndex:0;CGPoint currentPoint=touch locationInView:self.view;CGPoint lastPoint=touch previousLocationInView:self.view;UIButton*btn=(UIButton*)sender;CGRect frame=btn.frame;btn.frame=CGRectOffset(frame,currentPoint.x-lastPoint.x,currentPoint.y-last

    16、Point.y);课堂实验课堂实验 修改viewDidLoad函数:-(void)viewDidLoad super viewDidLoad;UIButton*btn=UIButton buttonWithType:UIButtonTypeRoundedRect;btn.frame=CGRectMake(110,225,100,30);btn setTitle:Click forState:UIControlStateNormal;self.view addSubview:btn;btn addTarget:self action:selector(buttonPressed:)forCont

    17、rolEvents:UIControlEventTouchDownRepeat;btn addTarget:self action:selector(buttonMoved:forEvent:)forControlEvents:UIControlEventTouchDragInside;课堂实验课堂实验 修改buttonPressed函数:-(IBAction)buttonPressed:(id)sender int x=arc4random()%220;int y=arc4random()%450;UIButton*btn=UIButton buttonWithType:UIButtonTy

    18、peRoundedRect;btn.frame=CGRectMake(x,y,100,30);btn setTitle:Click forState:UIControlStateNormal;self.view addSubview:btn;btn addTarget:self action:selector(buttonPressed:)forControlEvents:UIControlEventTouchDownRepeat;btn addTarget:self action:selector(buttonMoved:forEvent:)forControlEvents:UIControlEventTouchDragInside;Thanks

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:[工学]IOS编程-TargetAction-实验指导课件.ppt
    链接地址:https://www.163wenku.com/p-3571449.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库