接上述案例找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的更多相关文章

  1. iOS开发~视图(UIView)与控件(UIControl)

    1.UIView类 1.什么是视图 看得见的都是视图 2.什么是控件 一种特殊的视图,都是UIControl的子类,不仅具有一定的显示外观,还能响应高级事件,与用户交互.严格意义上UILabel不是控 ...

  2. IOS开发-UI学习-使用UIImageView控件制作动画

    先添加40张tomcat的图片到资源列表中:名称为cat_eat0000.jpg到cat_eat0039.jpg. 1.定义所需控件 // 定义按钮,图片控件.可变数组对象 UIButton *act ...

  3. iOS开发之资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0+)

    今天博客中,我们就来实现一下一些常用资讯类App中常用的分类选择的控件的封装.本篇博客中没有使用到什么新的技术点,如果非得说用到了什么新的技术点的话,那么勉强的说,用到了一些iOS9以后UIColle ...

  4. Android开发之基本控件和详解四种布局方式

    Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方 ...

  5. ios开发随笔第一篇-button,label按钮的一些属性的使用

    我用的是纯代码方式,喜欢用storyboard开发的其实也很爽了; 首先谈谈button,ios中新建button这个对象一般接触的都明白,UIButton *button名=[ UIButton a ...

  6. Excel开发学习笔记:界面交互与控件的布局

    遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. , ).value ...

  7. 【IOS界面布局】横竖屏切换和控件自适应(推荐)

    [IOS界面布局]横竖屏切换和控件自适应(推荐) 分类: [MAC/IOS下开发]2013-11-06 15:14 8798人阅读 评论(0) 收藏 举报 横竖屏切换 自适应 第一种:通过人为的办法改 ...

  8. Windows Phone开发(16):样式和控件模板

    原文:Windows Phone开发(16):样式和控件模板 在前面资源一文中也提过样式,样式就如同我们做HTML页排版时常用到的CSS样式表,它是对于特定娄型的可视化元素,应该可以直接说是针对控件的 ...

  9. firefox扩展开发(二):用XUL创建窗口控件

    firefox扩展开发(二):用XUL创建窗口控件 2008-06-11 16:57 1.创建一个简单的窗口 <?xml version="1.0"?> <?xm ...

随机推荐

  1. ubuntu安装ssh服务记录

    执行命令: sudo apt-get install openssh-server 有时候会出现这个错误: unable to  fetch some archives ,maybe run apt- ...

  2. (笔试题)小米Git

    题目: git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base'<--base<--A<--A' ^ | --- B<--B' 小米工程师常常需 ...

  3. 【Flash 插件】时钟类插件

    1.honehone_clock人体时钟实现 原理:就是在网页上播放已写好的.SWF文件. 效果如下: 效果一:背景透明,推荐为白色或浅背景 效果二:背景白色,推荐黑色或深色背景 实现步骤: 先引用 ...

  4. 如何为Android上的产品设计一款合适的图标

    如 果你已经完成了你的app,你一定会马上向其它人宣布这件事情.但是你需要注意一个很重要的问题,那就是app的图标.你的图标可能在项目启动之 前就已经设计好了,但我不喜欢这样,如果app没有完成实际上 ...

  5. 火狐浏览器Firefox如何使用插件,火狐有哪些好用的插件

    1 CoorPreviews 不打开网页链接预览该网页的内容. 预览如图所示: 点击关闭旁边的钉子可以让该窗口保持开着并且浏览速度加快.这对于快速浏览图片时非常有用. 2 FoxTab 3D方式预览网 ...

  6. Python面向对象编程 - 一个记事本程序范例(二)

    给程序加上控制台菜单 menu.py import sys from notebook import Notebook, Note class Menu: '''Display a menu and ...

  7. Mysql分区的技能

    1. 查看分区信息 (1)explain partitions select * from TDM_YTMF_BRAND_CATE_GDS_STC_D 语法:explain partitions se ...

  8. Hibernate(九)HQL查询

    一.Hibernate提供的查询方式 OID查询方式:主键查询.通过get()或者load()方法加载指定OID的对象查询结果为一个 HQL查询方式:通过Query接口使用HQL语言进行查询 QBC查 ...

  9. STS application.properties 中文乱码

    解决方案: window -- preferences -- content 步骤一:Text -- Java Properties File 步骤二:Text -- Java Properties ...

  10. javaScriptObject转String

    function obj2str(o){ var r = []; if(typeof o =="string") return "\""+o.repl ...