识别点击并可以更改其文本/标签的视图的理想选择?

Posted

技术标签:

【中文标题】识别点击并可以更改其文本/标签的视图的理想选择?【英文标题】:Ideal choice for a view which recognizes taps and can change its text/label? 【发布时间】:2014-03-05 15:21:23 【问题描述】:

这个问题是针对ios开发平台的。

我正在寻找带有一些文字并且可以识别水龙头的东西。一旦被点击,它会做一些事情并改变自己的文本。 (它将成为类似应用的游戏的一部分)。

起初我考虑使用带有自定义图像的 UIButton。但是在尝试更改上面的文字时,我意识到它是只读的。

然后我考虑使用 UILabel,但它不适合我的使用,因为在稍后阶段,我想让 View 具有自定义形状和轮廓。

现在,我正在考虑添加一个通用 UIView 并添加一个标签作为子视图。 (我可以给 UIView 一个自定义形状吗?)

请有人指出一个更好的解决方案,或者如果我在上面错了。

【问题讨论】:

UIButton 的标题不是只读的。您可以使用setTitle:forState: 方法。 我希望生成一些新文本,并在每次有人点击时更新按钮上的文本以恢复正常状态。可以用你建议的方法吗? 是的,您可以,这就是该方法的目的。检查本文档底部以了解可用状态。 UIControl Class Reference 谢谢!我已经阅读了该方法的描述,但不明白他们的措辞。试了一下,效果和我预期的一样。再次感谢。 :) 只是想知道如果我选择自定义并设置一个圆形图像,那么如果玩家在圆圈之外但在包含的正方形内点击会发生什么? 如果您找到了这个问题的答案,请将其添加为这个问题的答案(并且只是一个答案)。无需编辑您的问题以包含答案。 【参考方案1】:

要创建自定义形状的对象,请使用 UIbezierPath。通过 UIbezierPath 我们可以创建自定义形状的 UIViews。在这些视图中触摸可以处理向该视图添加手势。

示例:-

UIBezierPath* path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(0, 0)];
[path addLineToPoint:CGPointMake(view.frame.size.width, 0)];
[path addLineToPoint:CGPointMake(view.frame.size.width, [self headerBackGroundView].frame.size.height)];
[path addLineToPoint:CGPointMake(self.frame.size.width, self.frame.size.height)];

[path setLineWidth:1.0];

[[UIColor lightGrayColor] setStroke];

[path stroke];

【讨论】:

【参考方案2】:

正如 Desdenova 所说,他的解决方案对我有用。

UIButton 的标题不是只读的。您可以使用 setTitle:forState: 方法。

【讨论】:

以上是关于识别点击并可以更改其文本/标签的视图的理想选择?的主要内容,如果未能解决你的问题,请参考以下文章

按标签查找uitextfields

集合视图在第一个索引上设置单选按钮图像并选择更改

点击两次以突出显示收藏视图中的复选标记

获取点击手势识别器的标签或索引

IE 11不会更新选择元素中选定的选项项标签

Highcharts根据点击进行更改