我有一个UIViewController
与UITextView
自动检测其文本中的超链接。它工作正常,但我想用SFSafariViewController
打开链接,因此我保留在我的应用程序“内部”,而不是打开一个单独的浏览器,这是“开箱即用”的行为。打开网站与SFSafariViewController从UITextView自动检测链接
我已经采取了下面的步骤大纲,但网站仍然打开一个单独的Safari浏览器,而不是我的应用程序。我没有收到任何错误或警告,但检测到的网站仍然在单独的浏览器中打开,而不是在我的应用程序中打开。 UITextViewDelegate
方法似乎没有被调用(我扔了一个日志语句来检查)。
我看着UITextViewDelegate
,我想我想用这个方法来打开年代由UITextView
检测网站:
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
// Fill code in here to use SFSafariViewController
return YES;
}
什么我迄今所做的:
1)进口SafariServices ,做了委托声明,并在MyViewController中声明了一个委托属性。 ^h
@import SafariServices;
@interface MyViewController : UIViewController <UITextViewDelegate, SFSafariViewControllerDelegate>
@property(nonatomic, weak, nullable) id< SFSafariViewControllerDelegate, SFSafariViewControllerDelegate > delegate;
2)增加了一个代表部分,以我的.m文件,并试图以这种方法来填补从上面的存根:
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
SFSafariViewController *websiteToOpen = [[SFSafariViewController alloc]initWithURL:URL entersReaderIfAvailable:YES];
websiteToOpen.delegate = self;
[self presentViewController:websiteToOpen animated:YES completion:nil];
return YES;
}
我敢肯定这是100%,我这个碴但我无法超越终点线。我错过了什么?
你可以编辑你的答案,并把它放在斯威夫特?提前致谢!! –