ios 点击按钮,显示遮盖层的效果
2015-10-15 14:37
134 查看
1. 点击按钮,出现遮盖层,松开按钮,遮盖层消失
2. 长按按钮,出现遮盖层,松开按钮,遮盖层消失
3. 点击按钮,出现遮盖层,拖拽按钮,遮盖层消失
UIButton *btnBottom = [[UIButton alloc]initWithFrame:CGRectMake(1,1,100,100)];
[btnBottom addTarget:self action:@selector(buttonClickTouchDown:) forControlEvents:UIControlEventTouchDown];
[btnBottom addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:btnBottom];
#pragma mark-
#pragma mark-手指按下触发的事件(手指在按钮范围内)
-(void)buttonClickTouchDown:(UIButton *)btn
{
NSLog(@"手指按下触发的事件");
//按钮点击效果
UIView *vi = [[UIView alloc]initWithFrame:btn.frame];
vi.tag = 100;
vi.backgroundColor = [UIColor grayColor];
vi.alpha = 0.2;
[self addSubview:vi];
}
#pragma mark-
#pragma mark-点击图片跳转链接(当手指在按钮的范围内抬起的时候触发)
//根据btn.btnClickUrlString的值进行界面的跳转
-(void)buttonClick:(UIButton *)btn
{
NSLog(@"手指insd触发的事件");
//手指抬起的时候,取掉遮盖层
for (UIView *vi in [self subviews]) {//防止多次点击出现多层view
if (vi.tag == 100) {
[vi removeFromSuperview];
}
}
//点击按钮需要做的事情。。。。
}
#pragma mark-
#pragma mark-点击图片跳转链接(当手指在按钮内部拖动的时候触发)
-(void)buttonClickDragInside:(UIButton *)btn
{
NSLog(@"手指DragInside触发的事件");
//手指抬起的时候,取掉遮盖层
for (UIView *vi in [btn subviews]) {
//防止多次点击出现多层view
if (vi.tag == 100) {
[vi removeFromSuperview];
}
}
}
//因为我的btn添加在一个UIScrollerView 上面,所以在sc滚动的时候点击会出现bug,所以在sc滚动的时候将btn的交互性关闭,当sc减速停止的时候将btn的交互性在打开
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//当sc滚动的时候,关闭按钮的交互性(因为滚动会影响事件的判断)
if (scrollView.tag == 2) {
for (UIButton *btn in [scrollView subviews])
{
btn.userInteractionEnabled = NO;
}
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//当sc停止滚动的时候,打开按钮的交互性
if (scrollView.tag == 2) {
for (UIButton *btn in [scrollView subviews])
{
btn.userInteractionEnabled = YES;
}
}
}
2. 长按按钮,出现遮盖层,松开按钮,遮盖层消失
3. 点击按钮,出现遮盖层,拖拽按钮,遮盖层消失
UIButton *btnBottom = [[UIButton alloc]initWithFrame:CGRectMake(1,1,100,100)];
[btnBottom addTarget:self action:@selector(buttonClickTouchDown:) forControlEvents:UIControlEventTouchDown];
[btnBottom addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:btnBottom];
#pragma mark-
#pragma mark-手指按下触发的事件(手指在按钮范围内)
-(void)buttonClickTouchDown:(UIButton *)btn
{
NSLog(@"手指按下触发的事件");
//按钮点击效果
UIView *vi = [[UIView alloc]initWithFrame:btn.frame];
vi.tag = 100;
vi.backgroundColor = [UIColor grayColor];
vi.alpha = 0.2;
[self addSubview:vi];
}
#pragma mark-
#pragma mark-点击图片跳转链接(当手指在按钮的范围内抬起的时候触发)
//根据btn.btnClickUrlString的值进行界面的跳转
-(void)buttonClick:(UIButton *)btn
{
NSLog(@"手指insd触发的事件");
//手指抬起的时候,取掉遮盖层
for (UIView *vi in [self subviews]) {//防止多次点击出现多层view
if (vi.tag == 100) {
[vi removeFromSuperview];
}
}
//点击按钮需要做的事情。。。。
}
#pragma mark-
#pragma mark-点击图片跳转链接(当手指在按钮内部拖动的时候触发)
-(void)buttonClickDragInside:(UIButton *)btn
{
NSLog(@"手指DragInside触发的事件");
//手指抬起的时候,取掉遮盖层
for (UIView *vi in [btn subviews]) {
//防止多次点击出现多层view
if (vi.tag == 100) {
[vi removeFromSuperview];
}
}
}
//因为我的btn添加在一个UIScrollerView 上面,所以在sc滚动的时候点击会出现bug,所以在sc滚动的时候将btn的交互性关闭,当sc减速停止的时候将btn的交互性在打开
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//当sc滚动的时候,关闭按钮的交互性(因为滚动会影响事件的判断)
if (scrollView.tag == 2) {
for (UIButton *btn in [scrollView subviews])
{
btn.userInteractionEnabled = NO;
}
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//当sc停止滚动的时候,打开按钮的交互性
if (scrollView.tag == 2) {
for (UIButton *btn in [scrollView subviews])
{
btn.userInteractionEnabled = YES;
}
}
}
相关文章推荐
- iOS warning
- ios 底部弹出框菜单
- iOS 代码添加约束—VFL (AutoLayout)
- iOS开发:iOS TableViewCell自定义分割线
- iOS CocoaPods使用
- iOS 怕忘记的一些备用代码
- iOS 重写isEqual方法
- iOS应用性能调优(二)
- iOS程序性能优化(一)
- 如何减小iOS应用程序的大小?
- iOS原生地图开发进阶——使用导航和附近兴趣点检索
- ios之TableViewCell重用机制避免重复显示问题
- IOS Table中Cell的重用reuse机制分析
- iOS-方形图片设置成圆形图片
- iOS:CALayer锚点的使用
- Nagios 客户端简单安装
- iOS通过dSYM文件分析crash
- iOS exit函数深入浅出
- Nagios 服务端简单安装
- iOS开发如何将自己的程序在真机上运行