Objective c UILabel:在标签上使用userInteractionEnabled方法

Objective c UILabel:在标签上使用userInteractionEnabled方法,objective-c,cocoa-touch,uikit,uilabel,Objective C,Cocoa Touch,Uikit,Uilabel,我想知道是否有人在UILabel上使用userInteractionEnabled方法来允许标签像按钮一样工作(或者只是触发一个方法)。任何帮助都将不胜感激。干杯 更新(4/30/09@1:07pm)澄清:我有一个标准的InfoButton,我想在它旁边放置一个带有文本“settings”的标签,我希望标签能像按钮一样工作(翻转到设置屏幕。因此,基本上我需要将已经定义的showSettinsView绑定到“infoLabel”上标签;用户单击infoButton或infoLabel,方法就会触发

我想知道是否有人在UILabel上使用userInteractionEnabled方法来允许标签像按钮一样工作(或者只是触发一个方法)。任何帮助都将不胜感激。干杯

更新(4/30/09@1:07pm)澄清:我有一个标准的InfoButton,我想在它旁边放置一个带有文本“settings”的标签,我希望标签能像按钮一样工作(翻转到设置屏幕。因此,基本上我需要将已经定义的showSettinsView绑定到“infoLabel”上标签;用户单击infoButton或infoLabel,方法就会触发


infoButton已经在工作,正在使用iAction触发该方法。我想知道如何连接标签以实现相同的方法。仅此而已。干杯!

userInteractionEnabled
不是一个方法,而是一个属性。但我想您应该将其设置为
YES
,以允许事件通过
ui视图
superview

您可能要做的是覆盖包含
ui按钮
ui标签
子视图的
ui视图
touchsbegind:withEvent:
方法

在此方法中,测试任何
UITouch
触摸是否在
UILabel
的范围内

也就是说,
CGPoint
元素
[touch location inview]
是否与
CGRect
元素
[infoLabel bounds]
相交?查看函数
CGRectContainsPoint
,运行此测试


如果是这样,那么启动一个
NSNotification
,它调用与
UIButton
相同的
iAction
选择器。另一个解决方案是使用类型设置为custom的
UIButton
,而不是
UILabel
。这样,您的第二个按钮看起来就像
UILabel
,您可以配置重新启动showSettingsView方法。

我同意Alex 2009年4月30日的观点,如果你不想使用UIButton,我的建议只是其中的一个补充。我解决问题的方法是通过创建UILabel

- (id)initWithFrame:(CGRect)frame
{
    label = [[UILabel alloc] initWithFrame: CGRectMake(5, 5, 20, 20)];
    ...
    [label setUserInteractionEnabled: YES];
    [self addSubview: label];
}
然后,您可以覆盖touchsbegind、touchsended等touchs*方法

- (void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event {
      UITouch *touch = [touches anyObject];
      if([touch view] == label) {
          NSLog(@"I've been touched");
       }
   }     

如果你澄清你的问题,你会得到更多有用的回答:你具体需要什么帮助?你做了哪些不奏效的尝试,和/或你到底想做哪些不知道如何完成的事情?@smorgan:谢谢,我更新了这个问题。我希望它能有所帮助。谢谢Alex,我会继续尝试,看看我能做些什么。Cheers!我想知道为什么我有一个像你一样的代码,但我的代码不是触发触发触发