带有 UIButton 的 UILabel

UILabel with UIButtons

有没有办法让 UILabelsUITextViewsUIButtons

示例 1:"This Car is yellow and has 4 wheels."

其中 CarUIButton 并且可以在句子中的任何位置。

您可以将 UITapGestureRecognizer 分配给标签以检测点击:

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTapped:)];
tapGestureRecognizer.numberOfTapsRequired = 1;
[myLabel addGestureRecognizer:tapGestureRecognizer];
myLabel.userInteractionEnabled = YES;

然后在 'labelTapped:' 选择器方法中,使用手势对象计算点击在标签框架内的位置。然后,您必须确定单词在标签中的位置,并查看触摸是否在该 CGRect 中。

我已经使用 UITextView.firstRectForRange 方法通过应用程序完成了此操作。这允许您获取 UITextView 中文本的坐标。

我在文本中使用了按钮和魔术笔。渲染时,我找到了魔术标记并将 UIButtons 放在顶部。例如@"This is the age of the $Train$" 会在标记上放置一个标题为@"Train" 的按钮。

您还可以使用 RectForRange 将每个标记替换为记录位置的彩色文本。然后使用触摸手势查看是否选择了任何矩形。

在您想要的范围内使用带有 link 的 NSAttributedString,并在 TTTAttributedLabel 中显示它们。然后,只要 link 被点击,您就可以获得回调。