使用标签作为按钮 - 触摸标签时,为字符串赋值

时间:2013-04-07 17:13:34

标签: xcode button uibutton uilabel

使用标签作为按钮我遇到了一些挑战。我有一个标签定义为UILabel,并在我的.h文件中声明了字符串变量:

IBOutlet UILabel *l1;

@property(strong)NSString *myvariable;

在xib中,选中标签后,在Identity Inspector视图的Document下,设置带有所需标签名称的Label字段 - 例如:l1。我的标签中也有一些静态文本。

在文件所有者连接检查器中,我将l1插座连接到l1标签。

我的目标:当触摸标签时,我想简单地为字符串变量分配一个文本值,例如可能在.m文件中执行的操作:

self.myvariable = l1.text;

我尝试过的失败的事情:   - 在我的.h中设置UIButton,   - 尝试在.m中设置UIButton   - 在XIB Identity Inspector视图的“辅助功能”下,尝试选中“Traits”复选框以将标签设置为按钮

我还没弄明白。这可能是一个简单的标签问题,我对标签的大多数经验都包括静态文本显示,或使用纪元时间显示基于当前日期的倒计时。任何指导将不胜感激!

提前致谢! 罗布

4 个答案:

答案 0 :(得分:6)

环顾四周,大多数人建议使用实际按钮并将背景设置为透明或背景颜色。

那就是说,你可以这样做:

在viewWillLoad中:

    UILabel * label = [[UILabel alloc] init]; // change/delete to use your obj

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pushAction)];
[label addGestureRecognizer:tap];
label.userInteractionEnabled = YES;

然后设置选择器:

- (void) pushAction
{
    self.myvariable = l1.text;
}

答案 1 :(得分:0)

您可以创建一个扩展UILabel的自定义类,该类会覆盖

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

您可以在xib的身份检查器中分配新的自定义UILabel。

答案 2 :(得分:0)

UILabel *lblname        = [[ UILabel alloc]initWithFrame: CGRectMake(10, 120, 200, 35)];
lblname.text            = @"sunil";
lblname.textColor       = [UIColor blueColor];
lblname.textColor       = [UIColor blueColor];
lblname.backgroundColor = [UIColor orangeColor];
[self.view addSubview:lblname];

UIButton *btnpress      = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btnpress.frame          = CGRectMake(10, 180, 300, 20);
[btnpress setTitle:@"click" forState:UIControlStateNormal];
[btnpress addTarget:self action:@selector(btnpress1) forControlEvents:UIControlEventTouchUpInside];
btnpress.backgroundColor = [UIColor redColor];
[self.view addSubview:btnpress];

答案 3 :(得分:0)

我希望将整个屏幕作为一个按钮,按下该按钮会更改按钮上显示的标签上的文字。这就是我在xcode上的表现:

在故事板中,我将一个按钮拖到界面上。在您编辑按钮的右上角,我将按钮内容设置为" group"而不是文字。不要在按钮上将alpha设置为0。然后我在按钮/组的顶部拖了一个标签。当ctrl-拖动必要的操作和出口时,请务必通过暴露故事板的左侧面板来完成。更改按钮内容类型后,您可能只能通过鼠标访问该组。