2011-06-12 54 views
18

我希望做一个动作,如果有人触碰一个预声明UILabel,是这样的:UILabel有触摸方法吗?

if (label is touched) { 
    my actions; 
} 

有没有一种方法/办法做到这一点?

回答

44

你可以使用手势识别:

- (void)someSetupMethod { 
    // ... 
    label.userInteractionEnabled = YES; 
    UITapGestureRecognizer *tapGesture = \ 
    [[UITapGestureRecognizer alloc] 
    initWithTarget:self action:@selector(didTapLabelWithGesture:)]; 
    [label addGestureRecognizer:tapGesture]; 
    [tapGesture release]; 
} 

- (void)didTapLabelWithGesture:(UITapGestureRecognizer *)tapGesture { 
    // ... 
} 
11

默认情况下,UILabel未配置为接受触摸输入。但是,如果您改用UIButton并将其设置为具有自定义外观,则可以使其看起来像(单行)标签,并使其响应触摸事件。

+0

这真的很容易!谢谢! – 2017-11-29 23:12:14

0

你需要确保userinteractionenabled设置为YES,然后你可以重写touchesBegan:withEvent:

3

你可以继承它,并覆盖触摸的方法。您可能想要覆盖touchesEnded:withEvent:

或者只是使用UIButton。

0

只需为UILabel类添加一个类别并添加您的方法即可。