我一直在搜索这几个小时,但我失败了.我可能甚至不知道我应该寻找什么.
许多应用程序都有文本,在本文中是圆角矩形的Web超链接.当我点击它们UIWebView打开.让我感到困惑的是,他们经常有自定义链接,例如,如果单词以#开头,它也是可点击的,应用程序通过打开另一个视图来响应.我怎样才能做到这一点?是否有可能UILabel或我需要UITextView或其他什么?
hyperlink nsattributedstring uilabel ios uitapgesturerecognizer
我很难UITextView禁止选择文本.
我试过了:
canCancelContentTouches = YES;
Run Code Online (Sandbox Code Playgroud)
我尝试过子类化和覆盖:
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
Run Code Online (Sandbox Code Playgroud)
(但只有在选择后才会调用)
- (BOOL)touchesShouldCancelInContentView:(UIView *)view;
Run Code Online (Sandbox Code Playgroud)
(我没有看到被解雇)
- (BOOL)touchesShouldBegin:(NSSet *)touches
withEvent:(UIEvent *)event
inContentView:(UIView *)view;
Run Code Online (Sandbox Code Playgroud)
(我也没有看到被解雇)
我错过了什么?
在此之前的Xcode 9和iOS 11我有一个UITextView内UITableViewCell包含多个链接.每个链接都按预期工作,但自升级到iOS 11和Xcode 9后,链接不再有效.
UITextView似乎无法识别任何func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool从不触发的触摸交互.
升级后有没有其他人发现同样的问题?
因此,当用户与URL链接进行交互时,我会在UItextview中遇到崩溃.所有崩溃报告仅限iOS版本11.这看起来像iOS 9中众所周知的bug,但是没有单个报告iOS版本低于11,而且在报告中我发现了有趣的行:
UITextGestureClusterLinkInteract smallDelayRecognizer:
Run Code Online (Sandbox Code Playgroud)
里面传来与iOS 11(http://developer.limneos.net/?ios=11.0&framework=UIKit.framework&header=UITextGestureClusterLinkInteract.h).无论如何,现在我用它来修复它
@available(iOS 10.0, *)
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
UIApplication.shared.openURL(URL)
return false
}
Run Code Online (Sandbox Code Playgroud)
这不是很酷,因为你丢失了动作表菜单.我的假设是它是由3D触摸引起的(比如以前版本中的长按),但是如果我检测到3D触摸(75%,甚至是最大力的50%)并禁用此特定手势的链接交互 - 问题仍然出现.有没有人对这个特殊问题有一些经验,有更优雅的解决方法?
我正在尝试获得类似于Facebook使用的设置(如果他们使用的话UITextView).我想要自动检测链接,但我不想在UITextView可选择的任何其他文本.因此,用户可以单击链接但无法选择任何其他文本.
尽管搜索过,我还没有找到一个解决方案,因为链接选择工作它需要整个文本视图可供选择.
theTweet = [[[UITextView alloc] initWithFrame:CGRectMake(65, 10, 225, 65)] autorelease];
theTweet.text = [[tweets objectAtIndex:index] objectForKey:@"text"];
theTweet.dataDetectorTypes = UIDataDetectorTypeLink;
[tweetView addSubview:theTweet];
Run Code Online (Sandbox Code Playgroud)
[[tweets objectAtIndex:index] objectForKey:@"text"]; 包含与http://t.co/######的链接,但它似乎不是UITextView检测http://t.co链接.我需要使用UIWebView吗?
ios ×4
uitextview ×4
hyperlink ×3
ios11 ×2
iphone ×2
objective-c ×2
selection ×1
swift ×1
uilabel ×1
xcode ×1