iOS7 : UITapGestureRecognizer reuse issue

标签 ios objective-c cocoa-touch uitapgesturerecognizer

我设置了三个按钮。每个按钮都标记为 1...3。

enter image description here

我的 UITapGestureRecognizer 只对第一个 UIButton 起作用一次。无法选择其他两个选项。 代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(buttonTapped:)];
    recognizer.delegate = self;
    recognizer.cancelsTouchesInView = NO;
    [recognizer setNumberOfTapsRequired:1];
    [_btnNegative addGestureRecognizer:recognizer];
    [_btnNeutral addGestureRecognizer:recognizer];
    [_btnPositive addGestureRecognizer:recognizer];
}

buttonTapped: 方法:

-(void)buttonTapped:(UITapGestureRecognizer *)recognizer
{
    switch (((UIGestureRecognizer *)recognizer).view.tag)
    {
         case 1:
        {
            NSLog(@"Positive");
            [_btnPositive setBackgroundImage:[UIImage imageNamed:@"checkedBox"] forState:UIControlStateNormal];
            [_btnNegative setBackgroundImage:[UIImage imageNamed:@"UncheckedBox"] forState:UIControlStateNormal];
            [_btnNeutral setBackgroundImage:[UIImage imageNamed:@"UncheckedBox"] forState:UIControlStateNormal];
            _opinion=@"Positive";
            break;
        }
        case 2:
        {
            NSLog(@"Negative");
            [_btnNegative setBackgroundImage:[UIImage imageNamed:@"checkedBox"] forState:UIControlStateNormal];
            [_btnPositive setBackgroundImage:[UIImage imageNamed:@"UncheckedBox"] forState:UIControlStateNormal];
            [_btnNeutral setBackgroundImage:[UIImage imageNamed:@"UncheckedBox"] forState:UIControlStateNormal];
            _opinion=@"Negative";
            break;
        }
        case 3:
        {
            NSLog(@"Neutral");
            [_btnNeutral setBackgroundImage:[UIImage imageNamed:@"checkedBox"] forState:UIControlStateNormal];
            [_btnNegative setBackgroundImage:[UIImage imageNamed:@"UncheckedBox"] forState:UIControlStateNormal];
            [_btnPositive setBackgroundImage:[UIImage imageNamed:@"UncheckedBox"] forState:UIControlStateNormal];
            _opinion=@"Neutral";
            break;
        }
    }
}

只有 case:1 有效。其他情况永远不会被调用。我重新检查了按钮标签,没问题 1...3。非常感谢您的帮助。

最佳答案

不,您不能重复使用相同的手势识别器。手势识别器被设计为附加到一个且仅一个 View 。

关于iOS7 : UITapGestureRecognizer reuse issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24245814/

相关文章:

objective-c - 如何使用 MKAnnotation

ios - XCode:是否可以创建可重用的堆栈 View ?

objective-c - 确定 NSString 中的路径是指向目录还是​​文件?

iphone - 禁用特定类的 NSLog

ios - 从 Unity 到 iPhone 构建游戏(未找到 -GTMSessionFetcher 的库)?

c# - Unity iOS编译: Cross Compilation job Mono.WebBrowser.dll failed错误

ios - 使用 objectForKey 将 URL 从 JSON 转换为 UIImageView 的图像

ios - 未安装应用程序时启动 Web 应用程序

objective-c - 使用 NSIndexPath 作为 NSMutableDictionary 中的键的问题?

iphone - 应用程序唤醒时 EXC_BAD_ACCESS (SIGBUS) 和 EXC_BAD_ACCESS (SIGSEGV) 崩溃