Merge branch 'mkirk/message-focuse'

pull/1/head
Michael Kirk 8 years ago
commit 20355521fc

@ -4180,13 +4180,10 @@ typedef NS_ENUM(NSInteger, MessagesRangeSizeMode) {
// Canary check in case we later have another reason to set navigationController.delegate - we don't // Canary check in case we later have another reason to set navigationController.delegate - we don't
// want to inadvertently clobber it here. // want to inadvertently clobber it here.
OWSAssert(self.navigationController.delegate == nil) self.navigationController.delegate = self; OWSAssert(self.navigationController.delegate == nil);
TSMessage *message = (TSMessage *)interaction; self.navigationController.delegate = self;
MessageDetailViewController *view =
[[MessageDetailViewController alloc] initWithViewItem:conversationItem [self showMetadataViewForViewItem:conversationItem];
message:message
mode:MessageMetadataViewModeFocusOnMetadata];
[self.navigationController pushViewController:view animated:YES];
} else { } else {
OWSFail(@"%@ Can't show message metadata for message of type: %@", self.logTag, [interaction class]); OWSFail(@"%@ Can't show message metadata for message of type: %@", self.logTag, [interaction class]);
} }

@ -38,7 +38,7 @@ class MessageDetailViewController: OWSViewController, UIScrollViewDelegate {
var messageTextProxyViewHeightConstraint: NSLayoutConstraint? var messageTextProxyViewHeightConstraint: NSLayoutConstraint?
var bubbleViewWidthConstraint: NSLayoutConstraint? var bubbleViewWidthConstraint: NSLayoutConstraint?
var scrollView: UIScrollView? var scrollView: UIScrollView!
var contentView: UIView? var contentView: UIView?
var attachment: TSAttachment? var attachment: TSAttachment?
@ -96,11 +96,22 @@ class MessageDetailViewController: OWSViewController, UIScrollViewDelegate {
view.setNeedsLayout() view.setNeedsLayout()
view.layoutIfNeeded() view.layoutIfNeeded()
let contentHeight = scrollView.contentSize.height
let scrollViewHeight = scrollView.frame.size.height
guard contentHeight >= scrollViewHeight else {
// All content is visible within the scroll view. No need to offset.
return
}
// We want to include at least a little portion of the message, but scroll no farther than necessary.
let showAtLeast: CGFloat = 50 let showAtLeast: CGFloat = 50
let middleCenter = CGPoint(x: bubbleView.frame.origin.x + bubbleView.frame.width / 2, let bubbleViewBottom = bubbleView.superview!.convert(bubbleView.frame, to: scrollView).maxY
y: bubbleView.frame.origin.y + bubbleView.frame.height - showAtLeast) let maxOffset = bubbleViewBottom - showAtLeast
let offset = bubbleView.superview!.convert(middleCenter, to: scrollView) let lastPage = contentHeight - scrollViewHeight
self.scrollView!.setContentOffset(offset, animated: false)
let offset = CGPoint(x: 0, y: min(maxOffset, lastPage))
scrollView.setContentOffset(offset, animated: false)
} }
} }
} }

Loading…
Cancel
Save