当前位置:首页 > 通信资讯 > 正文

iOS button扩大点击事件(ios 按钮点击时的效果)

一、按钮的状态

1.uicontrolstatenormal

1> 除开uicontrolstatehighlighteduicontrolstatedisableduicontrolstateselected以外的其他情况,都是normal状态

2> 这种状态下的按钮【可以】接收点击事件

2.uicontrolstatehighlighted

1> 【当按住按钮不松开】或者【highlighted = yes】时就能达到这种状态

2> 这种状态下的按钮【可以】接收点击事件

3.uicontrolstatedisabled

1> 【button.enabled = no】时就能达到这种状态

2> 这种状态下的按钮【无法】接收点击事件

4.uicontrolstateselected

1> 【button.selected = yes】时就能达到这种状态

2> 这种状态下的按钮【可以】接收点击事件

二、让按钮无法点击的2种方法

1> button.enabled = no;

*【会】进入uicontrolstatedisabled状态

2> button.userinteractionenabled = no;

*【不会】进入uicontrolstatedisabled状态,继续保持当前状态

三、ios中按钮点击事件处理方式

在ios开发中,时常会用到按钮,通过按钮的点击来完成界面的跳转等功能。按钮事件的实现方式有多种,其中

较为常用的是目标-动作对模式。但这种方式使得view与controller之间的耦合程度较高,不推荐使用;

另一种方式是代理方式,按钮的事件在view中绑定,controller作为view的代理实现代理方法。

目标-动作对实现方式

具体来说,假设我们有一个包含一个button的veiw,view将button放在头文件中,以便外部访问。然后controller将view作为自己的view,在viewcontroller中实现按钮的点击事件。

文字描述起来好像不够直观,直接上代码

1、myview.h

包含一个可被外部访问的按钮的view

?
1 2 3 4 5 @interface myview : uiview @property (strong, nonatomic) uibutton *mybtn; @end

2、myview.m

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #import "myview.h" @implementation myview //view的初始化方法 - (id)initwithframe:(cgrect)frame { self = [super initwithframe:frame]; if (self) { //初始化按钮 _mybtn = [[uibutton alloc] initwithframe:cgrectmake(140, 100, 100, 50)]; _mybtn.backgroundcolor = [uicolor redcolor]; //将按钮添加到自身 [self addsubview:_mybtn]; } return self; } @end

3、myviewcontroller.h

?
1 2 3 4 5 #import <uikit/uikit.h> @interface myviewcontroller : uiviewcontroller @end

4、myviewcontroller.m

添加myview作为自身view

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #import "myviewcontroller.h" #import "myview.h" @interface myviewcontroller () @property (strong, nonatomic) myview *myview; @end @implementation myviewcontroller - (void)loadview { myview *myview = [[myview alloc] initwithframe: [[uiscreen mainscreen] bounds] ]; self.view = myview; self.myview = myview; //在controller中设置按钮的目标-动作,其中目标是self,也就是控制器自身,动作是用目标提供的btnclick:方法, [self.myview.mybtn addtarget:self action:@selector(btnclick:) forcontrolevents:uicontroleventtouchupinside]; } //myview中的按钮的事件 - (void)btnclick:(uibutton *)btn { nslog(@"method in controller."); nslog(@"button clicked."); }

5、 appdelegate.m

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #import "appdelegate.h" #import "myviewcontroller.h" @interface appdelegate () @end @implementation appdelegate - (bool)application:(uiapplication *)application didfinishlaunchingwithoptions:(nsdictionary *)launchoptions { self.window = [ [uiwindow alloc] initwithframe: [[uiscreen mainscreen] bounds ] ]; myviewcontroller *myvc = [[myviewcontroller alloc] init]; self.window.rootviewcontroller = myvc; self.window.backgroundcolor = [uicolor whitecolor]; [self.window makekeyandvisible]; return yes; }

6、运行结果

界面:

iOS button扩大点击事件(ios 按钮点击时的效果)

输出:

iOS button扩大点击事件(ios 按钮点击时的效果)

总结

以上就是这篇文章的全部内容了,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

如果您对该产品感兴趣,请填写办理(客服微信:xiaoxiongyidong)

为您推荐:

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。