gpt4 book ai didi

iOS:在 NSAttributedString 上添加按钮

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:46:29 27 4
gpt4 key购买 nike

我想知道是否可以将 UIButton 放在一段文本的精确坐标上。

例如,我的 UILabel 有这个文本:

“没有帐户?登录

在斜体内容中,我需要在上面放一个按钮,触摸这个按钮会触发一个打开登录 View 的 Action

做好这个功能非常重要,不用做任何事情就可以在其他语言中使用相同的功能:)

谢谢

最佳答案

我会回复我的回答,因为这可能对遇到同样问题的其他开发者有所帮助。

1:您需要实现 UITextViewDelegate 方法:- (BOOL)textView:shouldInteractWithURL:inRange:

实现很简单,基本上,你会在NSURL中比较接收到的链接。当我有很多链接时,我喜欢使用 NSURL 组件按主机进行比较,例如:

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
NSString *urlScheme = URL.scheme;
NSString *host = URL.host;

if([urlScheme isEqualToString:@"myapp"])
{
if([host isEqualToString:@"/signin"])
[self.onSignRequest( self )];
}

return YES;
}

当用户触摸链接时将调用此方法。

2:创建两个 NSString 实例,一个用于字符串 "Don't have an account?" ,另一个用于字符串 “注册”

NSString *labelText = @"Don't have an account? ";
NSString *linkedText = @"Sign Up";

3:创建一个 NSMutableAttributedString 实例,将两个字符串连接起来:

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithAttributedString:[AttributedText attributedStringWithText:[NSString stringWithFormat:@"%@%@", labelText, linkedText]
font:[UIFOnt systemFontOfSize:14.f]
color:[UIColor blueColor]]];

4:从之前创建的可变属性字符串为链接文本创建范围:

NSRange range = [[attributedString  string] rangeOfString:linkedText];

5:创建一个字符串

5:为具有在步骤4

中创建的范围的可变字符串添加新的 NSLinkAttributeName
[attributedString addAttribute:NSLinkAttributeName value:URLStringLink range:range];

6:使用 UILabelattributedText 属性将可变字符串添加到 UILabel

_label.attributedText = attributedText;

7:设置标签的委托(delegate):

_label.delegate = textViewDelegate;

就是这样。我希望这对任何需要在 UILabel

中添加“可触摸”链接的人都有帮助

干杯,

关于iOS:在 NSAttributedString 上添加按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17278169/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com