Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion EmojiPicker/EmojiPicker.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ open class EmojiPicker {
public class var viewController: EmojiPickerViewController {
let storyboard = UIStoryboard(name: "EmojiPicker", bundle: Bundle(for: EmojiPickerViewController.self))
let viewController = storyboard.instantiateInitialViewController() as! EmojiPickerViewController
viewController.modalPresentationStyle = .overCurrentContext
viewController.modalPresentationStyle = .overFullScreen
return viewController
}
}
Expand Down
30 changes: 20 additions & 10 deletions EmojiPicker/View/EmojiPicker/EmojiPickerViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -28,22 +28,32 @@ open class EmojiPickerViewController: UIViewController {

open override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let storyboard = UIStoryboard(name: "EmojiPopover", bundle: Bundle(for: EmojiPopoverViewController.self))
emojiPopoverVC = storyboard.instantiateInitialViewController() as? EmojiPopoverViewController
emojiPopoverVC.delegate = self
emojiPopoverVC.sourceView = view
emojiPopoverVC.sourceRect = sourceRect
if emojiPopoverVC == nil {
let storyboard = UIStoryboard(name: "EmojiPopover", bundle: Bundle(for: EmojiPopoverViewController.self))
emojiPopoverVC = storyboard.instantiateInitialViewController() as? EmojiPopoverViewController
}
emojiPopoverVC.delegate = self
emojiPopoverVC.isDarkMode = isDarkMode
emojiPopoverVC.language = language
emojiPopoverVC.emojiFontSize = emojiFontSize
if round(emojiPopoverVC.emojiFontSize) != round(emojiFontSize) {
emojiPopoverVC.emojiFontSize = emojiFontSize
}
emojiPopoverVC.dismissAfterSelected = dismissAfterSelected
emojiPopoverVC.darkModeBackgroundColor = darkModeBackgroundColor
emojiPopoverVC.backgroundColor = backgroundColor
emojiPopoverVC.permittedArrowDirections = permittedArrowDirections
emojiPopoverVC.preferredContentSize = size
emojiPopoverVC.modalPresentationStyle = .popover
emojiPopoverVC.popoverPresentationController?.permittedArrowDirections = permittedArrowDirections
emojiPopoverVC.popoverPresentationController?.delegate = emojiPopoverVC
emojiPopoverVC.popoverPresentationController?.sourceView = view
emojiPopoverVC.popoverPresentationController?.sourceRect = sourceRect
present(emojiPopoverVC, animated: true, completion: nil)
}

open override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
emojiPreviewer.hide()
super.viewWillTransition(to: size, with: coordinator)
}
}

// MARK: - EmojiPickerContentViewControllerDelegate
Expand All @@ -56,12 +66,12 @@ extension EmojiPickerViewController: EmojiPopoverViewControllerDelegate {

func emojiPickerViewController(_ controller: EmojiPopoverViewController, brief emoji: Emoji, sourceView: UIView) {
let sourceRect = sourceView.convert(sourceView.bounds, to: view)
emojiPreviewer.brief(sourceView: view.window!, sourceRect: sourceRect, emoji: emoji, emojiFontSize: emojiFontSize, isDarkMode: isDarkMode)
emojiPreviewer.brief(sourceView: view, sourceRect: sourceRect, emoji: emoji, emojiFontSize: emojiFontSize, isDarkMode: isDarkMode)
}

func emojiPickerViewController(_ controller: EmojiPopoverViewController, preview emoji: Emoji, sourceView: UIView) {
let sourceRect = sourceView.convert(sourceView.bounds, to: view)
emojiPreviewer.preview(sourceView: view.window!, sourceRect: sourceRect, emoji: emoji, emojiFontSize: emojiFontSize, isDarkMode: isDarkMode) { [weak self] selectedEmoji in
emojiPreviewer.preview(sourceView: view, sourceRect: sourceRect, emoji: emoji, emojiFontSize: emojiFontSize, isDarkMode: isDarkMode) { [weak self] selectedEmoji in
guard let strongSelf = self else { return }
var emoji = emoji
emoji.selectedEmoji = selectedEmoji
Expand All @@ -76,6 +86,6 @@ extension EmojiPickerViewController: EmojiPopoverViewControllerDelegate {

func emojiPickerViewControllerDidDimiss(_ controller: EmojiPopoverViewController) {
emojiPreviewer.hide()
dismiss(animated: true, completion: nil)
dismiss(animated: false, completion: nil)
}
}
26 changes: 4 additions & 22 deletions EmojiPicker/View/EmojiPopover/EmojiPopoverViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,6 @@ protocol EmojiPopoverViewControllerDelegate: class {
}

final class EmojiPopoverViewController: UIViewController {
var sourceRect: CGRect = .zero {
didSet {
popoverPresentationController?.sourceRect = sourceRect
}
}
var sourceView: UIView? {
didSet {
popoverPresentationController?.sourceView = sourceView
}
}
var permittedArrowDirections: UIPopoverArrowDirection = .any {
didSet {
popoverPresentationController?.permittedArrowDirections = permittedArrowDirections
}
}
var emojiFontSize: CGFloat = 29 {
didSet {
emojisCollectionView?.reloadData()
Expand Down Expand Up @@ -68,13 +53,6 @@ final class EmojiPopoverViewController: UIViewController {
lazy var viewModel: EmojiPickerViewModelProtocol = EmojiPickerViewModel(userDefaults: UserDefaults.standard)
lazy var vibrator: Vibratable = Vibrator()

override func awakeFromNib() {
super.awakeFromNib()
modalPresentationStyle = .popover
popoverPresentationController?.permittedArrowDirections = permittedArrowDirections
popoverPresentationController?.delegate = self
}

override func viewDidLoad() {
super.viewDidLoad()
setupViews()
Expand All @@ -84,6 +62,10 @@ final class EmojiPopoverViewController: UIViewController {
return .none
}

func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
return .none
}

func select(emoji: Emoji) {
viewModel.select(emoji: emoji)
emojisCollectionView.reloadSections(IndexSet(integer: EmojiGroup.frequentlyUsed.index))
Expand Down