
前言:
此文讲的主要是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>
网友评论