iOS开发之共性问题解决方案

一、如何避免button的多次点击问题?

方案逻辑总结:
1)在每次点击时先取消之前的操作(解决了疯狂点击的操作,意思就是让button延迟执行,如果你疯狂点击,没有到时间,上一次的点击就被取消掉了)http://blog.youkuaiyun.com/fengsh998/article/details/11112885
- (void)buttonClicked:(id)sender
{
  //这里是关键,点击按钮后先取消之前的操作,再进行需要进行的操作
  [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(buttonClicked:) object:sender];
  [self performSelector:@selector(buttonClicked: )withObject:sender afterDelay:0.2f];
}
2)点击后将按钮置为不可点击状态,几秒后恢复(或者请求失败后恢复,不可在成功的时候恢复,因为这种情况还是会push出多个控制器,效果不行,只能在viewwillAppear里面写一个方式让button恢复点击状态)
-(void)buttonClicked:(id)sender{
  self.button.enabled = NO;
  [self performSelector:@selector(changeButtonStatus) withObject:nil afterDelay:1.0f];//防止用户重复点击
}

-(void)changeButtonStatus{
  self.button.enabled = YES;
}
3)防止push操作进入多个控制器

如果你的Navigation是自定义的,可以重写-

-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated方法,在此方法中做处理,代码如下:

      - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated 

      { 

            if (![[super topViewController] isKindOfClass:[viewController class]]) {  // 如果和上一个控制器一样,隔绝此操作

                [super pushViewController:viewController animated:animated]; 

             } 

      }
 此中方法可以防止多次重复push,但如果你想push的下一个控制器恰好和上一个控制器类型(Class)一样,就不会push成功。所以并不推荐使用此方法。
4)使用Runtime监听点击事件,忽略重复点击,设置一个事件时间间隔eventTimeInterval属性,使其规定时间内只响应一次点击时间(原理同第二种方式,只是更加灵活的实现)http://www.cnblogs.com/wanxudong/p/5984941.html

二、如何避免屏幕内多个button被同时点击

1、在AppDelegate中添加 [[UIButton appearance] setExclusiveTouch:YES];
2、或者每新建button都设置button.exclusiveTouch = YES;

三、如何解决UI给的图片作为按钮时不好触发问题?

四、点击空白处如何让键盘消失?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sailip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值