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