diff options
author | Vitaly Takmazov | 2023-05-17 05:18:28 +0300 |
---|---|---|
committer | Vitaly Takmazov | 2023-05-17 05:18:28 +0300 |
commit | f84682e32633cee9c582fbc20fbe98cfa12f7d5c (patch) | |
tree | b4db7eb598bbdcb2a93a9b9ed58b6968f77d6355 /Juick | |
parent | b3288eb9eac7d7776849271a4270c1eda9713e91 (diff) |
Open links with in-app Safari
Diffstat (limited to 'Juick')
-rw-r--r-- | Juick/ViewControllers/MessagesViewController.h | 3 | ||||
-rw-r--r-- | Juick/ViewControllers/MessagesViewController.m | 13 | ||||
-rw-r--r-- | Juick/Views/MessageCell.swift | 7 |
3 files changed, 18 insertions, 5 deletions
diff --git a/Juick/ViewControllers/MessagesViewController.h b/Juick/ViewControllers/MessagesViewController.h index 55a2bde..d3e3f07 100644 --- a/Juick/ViewControllers/MessagesViewController.h +++ b/Juick/ViewControllers/MessagesViewController.h @@ -8,6 +8,7 @@ #import <UIKit/UIKit.h> #import "Message.h" +@import SafariServices; @protocol MessageCellDelegate; @@ -17,7 +18,7 @@ extern NSString* const messageCellIdentifier; -(void) loadMore; @end -@interface MessagesViewController : UITableViewController<MessageCellDelegate> +@interface MessagesViewController : UITableViewController<MessageCellDelegate, SFSafariViewControllerDelegate> @property(nonatomic, strong) NSString *path; @property(nonatomic, strong) NSDictionary *params; @property(nonatomic, assign) BOOL shouldScrollToUnreadOnRefresh; diff --git a/Juick/ViewControllers/MessagesViewController.m b/Juick/ViewControllers/MessagesViewController.m index 8563fca..9fad013 100644 --- a/Juick/ViewControllers/MessagesViewController.m +++ b/Juick/ViewControllers/MessagesViewController.m @@ -226,11 +226,18 @@ NSString* const messageCellIdentifier = @"messageCell"; [self performSegueWithIdentifier:@"profileSegue" sender:self];*/ } +- (void)safariViewControllerDidFinish:(SFSafariViewController *)controller { + [self dismissViewControllerAnimated:YES completion:nil]; +} + -(void)linkClicked:(NSString *)urlString { NSURL *url = [NSURL URLWithString:urlString]; - [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) { - - }]; + SFSafariViewControllerConfiguration *configuration = [[SFSafariViewControllerConfiguration alloc] init]; + configuration.entersReaderIfAvailable = NO; + configuration.barCollapsingEnabled = YES; + SFSafariViewController *safariViewController = [[SFSafariViewController alloc] initWithURL:url configuration:configuration]; + safariViewController.delegate = self; + [self presentViewController:safariViewController animated:YES completion:nil]; } - (void)dealloc diff --git a/Juick/Views/MessageCell.swift b/Juick/Views/MessageCell.swift index ebebec2..61867ce 100644 --- a/Juick/Views/MessageCell.swift +++ b/Juick/Views/MessageCell.swift @@ -14,7 +14,7 @@ import UIKit } @objc -class MessageCell: UITableViewCell { +class MessageCell: UITableViewCell, UITextViewDelegate { @IBOutlet weak var avatar: UIImageView! @IBOutlet weak var message: UITextView! @IBOutlet weak var title: UILabel! @@ -89,6 +89,7 @@ class MessageCell: UITableViewCell { } self.message.attributedText = nil if (msg.text != nil) { + self.message.delegate = self self.message.isHidden = false self.message.isSelectable = selectable self.message.isUserInteractionEnabled = selectable @@ -159,6 +160,10 @@ class MessageCell: UITableViewCell { self.delegate?.avatarClicked(name) } } + func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { + self.delegate?.linkClicked(URL.absoluteString) + return false + } @objc func linkClicked(_ sender: UITapGestureRecognizer){ self.delegate?.linkClicked(self.attachment!) } |