我不明白为啥这个@selector 不起作用

Posted

技术标签:

【中文标题】我不明白为啥这个@selector 不起作用【英文标题】:I don't get why this @selector isn't working我不明白为什么这个@selector 不起作用 【发布时间】:2014-02-10 09:51:42 【问题描述】:

我正在创建几个UIView,我添加了一个UITapGestureRecognizer 和一个action,假设调用viewController 中的一个方法,但它似乎不起作用。

-(void)setupFreeMoneyView 
    NSArray *array = @[@"Facebook", @"Twitter", @"SMS", @"Email"];
    int index = 0;
    for (NSString *str in array) 
        UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(100*index++, 0, 100, 100)];
        [imgView setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@Logo", str]]];
        [imgView addGestureRecognizer:[[UITapGestureRecognizer alloc]
                                   initWithTarget:self
                                   action:NSSelectorFromString([NSString stringWithFormat:@"postTo%@", str])]];
        [freeView addSubview:imgView];
    

freeView 是在MainStoryboard 中创建的UIView

我已经通过使用普通的 @selector() 检查了它是否是 NSSelectorFromString(),这不起作用,但这不是原因。

如果我将[imgView addGestureRecognizer:... 更改为[freeView addGestureRecognizer:...],它确实有效

我似乎不明白为什么会这样。

【问题讨论】:

你需要设置 userInteractionEnabled=YES 因为它默认为 NO。所以触摸交互会被 imageView 接收到 看看你的 iniiWithTarget: 参数。这就是您尝试调用其选择器的对象。确保它与实现您所追求的选择器的那个匹配。 【参考方案1】:

试试这个

imgView.userInteractionEnabled = YES ;

UIImageView 中的userInteractionEnabled 默认设置为 NO。

【讨论】:

【参考方案2】:

也许你需要为 UIImageView 设置 userInteractionEnabled = YES

【讨论】:

以上是关于我不明白为啥这个@selector 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

我不明白为啥这段代码不起作用 for int 错误 [重复]

多维动态数组,为啥不起作用?

为啥“点子秀”或“点子列表”对我不起作用?

谁能帮我理解为啥在“后缀”起作用时“前缀”不起作用以及如何解决这个问题?

为啥页面重定向在 php 中不起作用

快速无效计时器不起作用