此文讲的主要是app的开发意识,每个app开发者都得当自己的产品经理,如何设计,让app更友好,执行效率更高。 点击按钮请求服务器数据时,如果是网络状态不好,用户可能会多次点击,如果客户端不做限制,那么可能会导致多次请求,造成数据的混乱,页面的多次跳转,信息的报错等情况,故此,请求时限制用户多次点击很有必要
当然,也有国内的大媒体没有限制,在下亲测,例如iphone手机qq,用手机注册,输入手机后,可以快速点几次,然后界面也进入重复的界面几次,不过他们后台只发送了一次短信验证码(证明腾讯后台做了限制)
一定要在用户发送请求前就限制<code>button</code>(其他可点击的控件同理),然后请求回来后就放开限制,请求回来指的是无论是失败还是成功,抑或是请求超时,都要放开限制。 在此以iOS代码为例 <pre> //请求参数 NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@"a"] = @"a"; //发请求给服务器 _manager = [AFHTTPSessionManager manager]; [self.manager GET:@"http://DwadeCoding.com/api_open.php" parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { //请求成功,这时需要放开 //.....to do something } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { //网络超时等情况,这时需要放开 [MBProgressHUD showError:error.localizedDescription]; }]; </pre>
如果请求成功,我们一般会<code>push</code>或者<code>present</code>其他界面,但是最好要放开限制的原因是可能用户会按后退键回到上一个界面,不放开,用户就动不了那个<code>button</code>啦
我觉得限制分两点: 1、按钮color:颜色弄暗点、灰点(如果点击后不停留在本界面,可忽略) <pre> UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [btn addTarget:self action:@selector(btnColorChange:) forControlEvents:UIControlEventTouchDown]; //touchDown方法改变其颜色 -(void)btnColorChange { _btn.backgroundColor = [UIColor blueColor]; } </pre> 2、按钮action:不给点击 <pre>btn.enabled = YES;//控制可以点击 btn.enabled = NO;//禁止点击</pre>