【iOS开发-56】案例BUG:button的enabled、控件的userInteractionEnabled以及两种提示框UIAlert和UIActionSheet
接上述案例找BUG:【iOS开发-51】案例学习:动画新写法、删除子视图、视图顺序、延迟方法、button多功能使用方法及icon图标和启动页设置
(1)BUG:答案满了就不能再点击optionbutton,答案没满就能点。
在optionClick方法的if(full)中设置,即推断答案是否满了,假设满了。则:
if (full) {
//假设答案满了,无论是否正确,仅仅要满了,以下的optionbutton就不能被点击
for (UIButton *optionBtn in self.optionView.subviews) {
optionBtn.enabled=NO;
}
}
仅仅要点击答案button,答案必定没有满,所以做个相反操作:
-(void)answerClick:(UIButton *)answerBtn{
//假设答案满了,无论是否正确。仅仅要满了,以下的optionbutton就不能被点击
for (UIButton *optionBtn in self.optionView.subviews) {
optionBtn.enabled=YES;
}
}
(2)以上BUG的另外一种解决的方法:让optionbutton的父控件整个不能与用户交互。
即用下面语句:
self.optionView.userInteractionEnabled=NO;
self.optionView.userInteractionEnabled=YES;
取代上面的for循环。
可是除了以上两处之外,还要设置一处。就是由于我们推断了仅仅要答案满了,那么父控件就不能交互button不能点击,尽管通过点击答案就能恢复交互。
可是特殊情况是:我们点击满了,然后直接跳转到“下一题”,此时父控件依旧是被锁定不能交互的。所以须要在“跳转到下一题”的方法中,设置父控件能交互。即
- (IBAction)nextQuestion {
self.optionView.userInteractionEnabled=YES;
}
或者,最根本的是在加入optionbutton的那个方法中设置上面那句话:
-(void)addOptionBtn:(NSQuestion *)question{
self.optionView.userInteractionEnabled=YES;
}
(3)到了最后一题,尽管“下一题”button被之前做了推断不能点击,可是假设答案答对了系统会继续跳到下一题,这个时候依旧会崩溃,所以须要做个推断,假设是最后一题。则……弹框。
——下面语句的原理在于:假设我们正在回答的时最后一道题,那么答对之后,它会继续调用nextQuestion方法,这个时候我们就推断它是否是最后一道题,假设是,则弹框。
——这里的弹框,我们用不到代理,可是为了复习代理知识,把self(控制器)设置为它的代理。
- (IBAction)nextQuestion {
if (self.index==self.questions.count-1) {
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"恭喜" message:@"闯关成功!" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"好的", nil];
[alert show];
return;
}
}
——然后在开头的地方遵守协议
@interface ViewController ()<UIAlertViewDelegate>
——最后能够实现协议方法,也相当于能够实现监听。
比方以下这个button能够监听用户点击了哪个button,并能够做一些反应,比方输入是点击了哪个button序号。
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
NSLog(@"%d",buttonIndex);
}
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2Vpc3ViYW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
(4)延伸一下,还有一种提示框。
ActionSheet
——提示框的展示稍有差别,它的出现是“在哪个视图中出现”,还有其它出现方式。
- (IBAction)nextQuestion {
if (self.index==self.questions.count-1) {
UIActionSheet *sheet=[[UIActionSheet alloc]initWithTitle:@"恭喜通关! " delegate:nil cancelButtonTitle:@"取消" destructiveButtonTitle:@"确定" otherButtonTitles:@"其它", nil];
[sheet showInView:self.view];
return;
}
}
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2Vpc3ViYW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
【iOS开发-56】案例BUG:button的enabled、控件的userInteractionEnabled以及两种提示框UIAlert和UIActionSheet的更多相关文章
- iOS开发~视图(UIView)与控件(UIControl)
1.UIView类 1.什么是视图 看得见的都是视图 2.什么是控件 一种特殊的视图,都是UIControl的子类,不仅具有一定的显示外观,还能响应高级事件,与用户交互.严格意义上UILabel不是控 ...
- IOS开发-UI学习-使用UIImageView控件制作动画
先添加40张tomcat的图片到资源列表中:名称为cat_eat0000.jpg到cat_eat0039.jpg. 1.定义所需控件 // 定义按钮,图片控件.可变数组对象 UIButton *act ...
- iOS开发之资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0+)
今天博客中,我们就来实现一下一些常用资讯类App中常用的分类选择的控件的封装.本篇博客中没有使用到什么新的技术点,如果非得说用到了什么新的技术点的话,那么勉强的说,用到了一些iOS9以后UIColle ...
- Android开发之基本控件和详解四种布局方式
Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方 ...
- ios开发随笔第一篇-button,label按钮的一些属性的使用
我用的是纯代码方式,喜欢用storyboard开发的其实也很爽了; 首先谈谈button,ios中新建button这个对象一般接触的都明白,UIButton *button名=[ UIButton a ...
- Excel开发学习笔记:界面交互与控件的布局
遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. , ).value ...
- 【IOS界面布局】横竖屏切换和控件自适应(推荐)
[IOS界面布局]横竖屏切换和控件自适应(推荐) 分类: [MAC/IOS下开发]2013-11-06 15:14 8798人阅读 评论(0) 收藏 举报 横竖屏切换 自适应 第一种:通过人为的办法改 ...
- Windows Phone开发(16):样式和控件模板
原文:Windows Phone开发(16):样式和控件模板 在前面资源一文中也提过样式,样式就如同我们做HTML页排版时常用到的CSS样式表,它是对于特定娄型的可视化元素,应该可以直接说是针对控件的 ...
- firefox扩展开发(二):用XUL创建窗口控件
firefox扩展开发(二):用XUL创建窗口控件 2008-06-11 16:57 1.创建一个简单的窗口 <?xml version="1.0"?> <?xm ...
随机推荐
- 读书笔记-C#中装箱拆箱性能
前言 最近在看王涛大神的<你必须知道的.NET(第二版)>一书,嗯,首先膜拜一下…. 在书中的第五章-品味类型中,对装箱与拆箱一节感触很深,概念本身相信每一个程序猿都不陌生,装 ...
- php过滤文字中的表情字符和mysql服务端对emoji的支持
1.过滤emoji表情的原因 在我们的项目开发中,emoji表情是个麻烦的东西,即使我们可以能存储,也不一定能完美显示,因为它的更新速度很快:在iOS以外的平台上,例如PC或者android.如果你需 ...
- 内容匹配广告投放技术4:网盟CTR预估(百度文库课程)
原文:http://wbj0110.iteye.com/blog/2043065 该文是百度文库课程<计算广告学之内容匹配广告&展示广告原理.技术和实践>的课程笔记,感谢百度! 课 ...
- jmeter-The JVM should have exitted but did not
修改 jmeterengine.force.system.exit=true
- PHPCMS增加投票选项代码
<script src="jquery-1.10.1.js"></script> <tr> <th width="20%&quo ...
- JavaScript二(第一个js程序)
一.<script>xxxx</script>标签解析 1.charset :可选,表示通过src属性指定的字符集,由于大多数浏览器忽略它,所以很少有人用它2.defer:可选 ...
- 算法笔记_181:历届试题 回文数字(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的.这样的数字叫做:回文数字. 本题要求你找 ...
- 虚拟机下linux迁移造成MAC地址异常处理办法
虚拟机下linux迁移造成MAC地址异常处理办法 Linux无法启用网卡:Device eth0 has different MAC address than expected,ignoring解决 ...
- vue 笔记二
vue制作weibo 交互 vue-> 1.0 vue-resource ajax php 服务器环境(node) this.$http.get()/post()/jsonp() this.$h ...
- Oracle 11g 分区拆分与合并
时间范围分区拆分create table emp (id number(6) not null,hire_date date not null)partition by range(hire_date ...