正在回答 回答被采纳积分+1
3回答
Tender10
2017-08-18 11:05:50
您好,您的问题我已经知道了,但是您的代码写得有些命名不太规范,这里我在我上一份的案例中给您解决了这个问题,你可以自己去练习一下,感受一下。如果还有什么不明白的地方,可以继续提问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | #import "ViewController.h" @interface ViewController () @property (nonatomic,strong)NSArray *labelArray; @property (nonatomic,strong)UIImageView *imageView; @end @implementation ViewController - ( void )viewDidLoad { [super viewDidLoad]; [self imageViewAddGesture]; [self setFrame]; } - ( void )imageViewAddGesture { // 设置一个图片的大小、位置、颜色 self.imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 200, 200, 200)]; self.imageView.userInteractionEnabled = YES; self.imageView.backgroundColor = [UIColor redColor]; [self.view addSubview: self.imageView]; } // 点击、长按、滑动手势的响应事件 -( void )addTapGesture:(UITapGestureRecognizer *)tap { NSLog(@ "点击" ); tap.enabled = NO; } -( void )addLongGesture:(UILongPressGestureRecognizer *)longGesture { if (longGesture.state == UIGestureRecognizerStateBegan) { NSLog(@ "长按" ); } longGesture.enabled = NO; } -( void )addPanGesture:(UIPanGestureRecognizer *)panGesture { if (panGesture.state == UIGestureRecognizerStateBegan) { NSLog(@ "滑动" ); } panGesture.enabled = NO; } // 按钮位置 - ( void )setFrame { for ( int i = 0; i < 3; i++) { UIButton *gestureButton = [[UIButton alloc] initWithFrame:CGRectMake(100+i*60, 100, 40, 30)]; gestureButton.backgroundColor = [UIColor yellowColor]; [gestureButton addTarget:self action:@selector(gestureButtonClick:) forControlEvents:UIControlEventTouchUpInside]; [gestureButton setTitle:self.labelArray[i] forState:UIControlStateNormal]; [gestureButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; gestureButton.tag = i; [self.view addSubview:gestureButton]; } } // 存储按钮的Title - (NSArray *)labelArray { if (_labelArray == nil) { _labelArray = [NSArray arrayWithObjects:@ "点击" ,@ "长按" ,@ "滑动" ,nil]; } return _labelArray; } // 按钮的点击响应事件 - ( void )gestureButtonClick:(UIButton *)sender { NSInteger tag = sender.tag; if (tag == 0) { UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(addTapGesture:)]; [self.imageView addGestureRecognizer:singleTap]; } else if (tag == 1){ UILongPressGestureRecognizer *longGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(addLongGesture:)]; [self.imageView addGestureRecognizer:longGesture]; } else { UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(addPanGesture:)]; [self.imageView addGestureRecognizer:panGesture]; } } @end |
慕粉1330426222
2017-08-17 20:17:49
这个是测试的 第一张图是测试结果 测试过程是点击单击按钮后点击imageview触发点击手势打印 点击 俩字 第二个是我点击完单击后 点击长按按钮 在imageview中做出单击的手势 结果也打印出来 了 单击 二字 在我点击长按的时候 imageview上并没有禁用 单击手势
麻烦老师帮忙指出错误!
Tender10
2017-08-17 17:37:39
下面给你写了一个图片添加多个手势的案例,并且使用一个手势禁用其他全部手势
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | - ( void )viewDidLoad { [super viewDidLoad]; // 设置一个图片的大小、位置、颜色 UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)]; imageView.userInteractionEnabled = YES; imageView.backgroundColor = [UIColor redColor]; // 创建点击、长按、滑动三个手势 UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(addTapGesture:)]; UILongPressGestureRecognizer *longGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(addLongGesture:)]; UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(addPanGesture:)]; // 给同一个图片添加三个手势 [imageView addGestureRecognizer:singleTap]; [imageView addGestureRecognizer:longGesture]; [imageView addGestureRecognizer:panGesture]; [self.view addSubview: imageView]; } // 点击、长按、滑动手势的响应事件 -( void )addTapGesture:(UITapGestureRecognizer *)tap { NSLog(@ "点击" ); } -( void )addLongGesture:(UILongPressGestureRecognizer *)longGesture { if (longGesture.state == UIGestureRecognizerStateBegan) { NSLog(@ "长按" ); } } -( void )addPanGesture:(UIPanGestureRecognizer *)panGesture { if (panGesture.state == UIGestureRecognizerStateBegan) { NSLog(@ "滑动" ); } } |
如果看不懂,或者还是有疑问可以继续提问。
iOS入门:基础语法与常用控件
- 参与学习 1337 人
- 提交作业 712 份
- 解答问题 1878 个
很多人都在疑问没有基础该怎么学习iOS开发?不用担心,本路径采用游戏关卡式的教学模式,并且以经典OC与最新Swift双重结合的教学内容,帮助大家快速掌握两种iOS开发语言基础,去掉“零”标签。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧