自己做了一个九宫格,里面的图标都是由多张图片重叠构成,然后包装成一个button来使用;
遇到的问题是如何给这个“button”增加点击事件?
解决思路1:网友提示在该“button”上增加一个真正的透明button,这样就可以顺利执行点击事件了;但是本人尝试发现,如果我调整了button的透明度后,点击是没有效果的!可能是我操作错误,待再次验证。
解决思路2:为UIImageView增加手势
[ImageView addGestureRecognizer:我们自己的手势recognizer];
如何创建一个手势?看看UITapGestureRecognizer 的用法吧。
//单指单击 UITapGestureRecognizer *singleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleFingerEvent:)]; singleFingerOne.numberOfTouchesRequired = 1; //手指数 singleFingerOne.numberOfTapsRequired = 1; //tap次数 singleFingerOne.delegate= self; //单指双击 UITapGestureRecognizer *singleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleFingerEvent:)]; singleFingerTwo.numberOfTouchesRequired = 1; singleFingerTwo.numberOfTapsRequired = 2; singleFingerTwo.delegate= self; //双指单击 UITapGestureRecognizer *doubleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleFingerEvent:)]; doubleFingerOne.numberOfTouchesRequired = 2; doubleFingerOne.numberOfTapsRequired = 1; doubleFingerOne.delegate= self; UITapGestureRecognizer *doubleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleFingerEvent:)]; doubleFingerTwo.numberOfTouchesRequired = 2; doubleFingerTwo.numberOfTapsRequired = 2; doubleFingerTwo.delegate= self; //如果不加下面的话,当单指双击时,会先调用单指单击中的处理,再调用单指双击中的处理 [singleFingerOne requireGestureRecognizerToFail:singleFingerTwo]; //同理双指亦是如此 [doubleFingerOne requireGestureRecognizerToFail:doubleFingerTwo]; [self.view addGestureRecognizer:singleFingerOne]; [self.view addGestureRecognizer:singleFingerTwo]; [self.view addGestureRecognizer:doubleFingerOne]; [self.view addGestureRecognizer:doubleFingerTwo]; [singleFingerOne release]; [singleFingerTwo release]; [doubleFingerOne release]; [doubleFingerTwo release]; 处理事件的方法,代码: //处理单指事件 - (void)handleSingleFingerEvent:(UITapGestureRecognizer *)sender { if(sender.numberOfTapsRequired == 1) { //单指单击 NSLog(@"单指单击"); }elseif(sender.numberOfTapsRequired == 2){ //单指双击 NSLog(@"单指双击"); } } //处理双指事件 - (void)handleDoubleFingerEvent:(UITapGestureRecognizer *)sender { if(sender.numberOfTapsRequired == 1) { //双指单击 NSLog(@"双指单击"); }elseif(sender.numberOfTapsRequired == 2){ //双指双击 NSLog(@"双指双击"); } }