2011-05-27 87 views
-1
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];} 

    } 
+3

认真吗?你只是在那里转储你的代码而没有任何解释或暗示的问题?你相信我们是精神的吗?您的代码只说明一个事实:标签不接受用户交互。这是设计。标签是标签,而不是按钮,你必须自己处理事件。如果您想要更多地考虑修改您的问题,以表明您至少为您做出了一些努力。 – Jasarien 2011-05-28 00:02:25

+0

为什么不呢?我看到它具有.userInteractionEnabled属性。 – lilzz 2011-05-28 00:17:45

+0

当然,我正在亲自处理这个事件。那是什么touchbegan方法使用。如果触摸等价的label_win3视图然后触发一个动作。 – lilzz 2011-05-28 00:26:07

回答

2

UILabels应该也不能响应触摸。

TextViews,TextFields和Buttons都响应触摸。

如果您不确定特定UI元素是否可以进行用户交互,请阅读文档。

+0

为什么不呢?我看到它具有.userInteractionEnabled属性。 – lilzz 2011-05-28 00:18:04

1

userInteractionEnabled意味着触摸传递给视图。这并不意味着该视图(UILabel)与他们做了什么。 UILabel是一个非常轻量级的类。如果您想对UILabel触摸做出响应,请将其附加UIGestureRecognizer,对其进行分类或使用自定义UIButton。很多时候,UIGestureRecognizer是最好的解决方案(尽管你应该尽可能使用UIButton;它包含很多专门的行为,这些行为很难再现)。

无论如何,你没有理由期待你的touchesBegan:withEvent:会被调用。你没有感动。 UILabel被触动,并且touchesBegan:withEvent:被调用。然后,它没有按照设计做这件事。

Jasarien也是正确的,你的问题是非常不完整和困惑,但我想我们已经拼凑在一起。