UILabel未响应触摸
问题描述:
label_win3=[[UILabel alloc] initWithFrame:CGRectMake(55, 358, 210,15)];
[email protected]"Click here";
label_win3.textColor=[UIColor cyanColor];
label_win3.backgroundColor=[UIColor clearColor];
label_win3.font=[UIFont fontWithName:@"Helvetica" size: 14.0];
label_win3.textAlignment=UITextAlignmentCenter;
label_win3.userInteractionEnabled=YES;
[self.view addSubview:label_win3];
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint currentTouch = [touch locationInView:self.view];
if([touch view]==label_win3) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"ShowRegistration" object:nil];}
}
答
UILabels应该也不能响应触摸。
TextViews,TextFields和Buttons都响应触摸。
如果您不确定特定UI元素是否可以进行用户交互,请阅读文档。
+0
为什么不呢?我看到它具有.userInteractionEnabled属性。 – lilzz 2011-05-28 00:18:04
答
有userInteractionEnabled
意味着触摸传递给视图。这并不意味着该视图(UILabel
)与他们做了什么。 UILabel是一个非常轻量级的类。如果您想对UILabel触摸做出响应,请将其附加UIGestureRecognizer
,对其进行分类或使用自定义UIButton
。很多时候,UIGestureRecognizer
是最好的解决方案(尽管你应该尽可能使用UIButton
;它包含很多专门的行为,这些行为很难再现)。
无论如何,你没有理由期待你的touchesBegan:withEvent:
会被调用。你没有感动。 UILabel被触动,并且其touchesBegan:withEvent:
被调用。然后,它没有按照设计做这件事。
Jasarien也是正确的,你的问题是非常不完整和困惑,但我想我们已经拼凑在一起。
认真吗?你只是在那里转储你的代码而没有任何解释或暗示的问题?你相信我们是精神的吗?您的代码只说明一个事实:标签不接受用户交互。这是设计。标签是标签,而不是按钮,你必须自己处理事件。如果您想要更多地考虑修改您的问题,以表明您至少为您做出了一些努力。 – Jasarien 2011-05-28 00:02:25
为什么不呢?我看到它具有.userInteractionEnabled属性。 – lilzz 2011-05-28 00:17:45
当然,我正在亲自处理这个事件。那是什么touchbegan方法使用。如果触摸等价的label_win3视图然后触发一个动作。 – lilzz 2011-05-28 00:26:07