如何制作一个可以在iOS中触摸的多个部分的字符串?

时间:2015-06-23 17:08:02

标签: ios swift nsattributedstring nsmutableattributedstring

我想创建一个由3部分组成的字符串:

  • 用户名
  • 一些静态字符串
  • 帖子

例如:Thomas喜欢官方Stackoverflow页面

然后用户应该可以点击“托马斯'它将他重定向到Thomas的个人资料或者官方Stackoverflow页面'它将他重定向到帖子(应用程序内的某个地方)。当然,不同的部分可以有不同的格式。一个很好的例子是facebook应用程序,它显示了一些帖子或喜欢。

我会用autolayout来做,但是app应该是i18n-ized,这意味着部分可以改变(愚蠢的例子:&#39;官方Stackoverflow页面被Thomas&#39;)所喜欢。< / p>

由于我要将这些部分放在一起,我想我可以使用NSAttributedString,它可以完美地用于布局,但我无法添加任何操作。

我读过这样的内容:Add tap event to IOS NSMutableAttributedString。但真的吗?这就是全部?还有其他办法吗?

我更喜欢在swift中工作的解决方案或想法(如果已经有一些豆荚,我喜欢使用它们而不是重新发明轮子)

1 个答案:

答案 0 :(得分:0)

您可以为每个文本创建标签并执行以下操作:

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

然后将每个标签添加到具有适当布局约束的容器视图中,以对齐所有左侧或中心...

另一个想法是通过带有容器和3个带约束的标签的故事板来实现:

  • left = 0
  • 顶部和底部= 0
  • right = 1(或多或少地调整单词之间的空格)

然后

  • 在控制器上设置3个Segue,每个操作设置1个。
  • 为3个标签设置独特的触控回调。
  • 在此回调中,您将根据触摸的标签触发正确的Segue。
  • 然后根据您需要显示的内容填写内容。