about summary refs log tree commit diff
path: root/modules/expo-emoji-picker/ios/EmojiPickerView.swift
diff options
context:
space:
mode:
Diffstat (limited to 'modules/expo-emoji-picker/ios/EmojiPickerView.swift')
-rw-r--r--modules/expo-emoji-picker/ios/EmojiPickerView.swift30
1 files changed, 30 insertions, 0 deletions
diff --git a/modules/expo-emoji-picker/ios/EmojiPickerView.swift b/modules/expo-emoji-picker/ios/EmojiPickerView.swift
new file mode 100644
index 000000000..65089a2af
--- /dev/null
+++ b/modules/expo-emoji-picker/ios/EmojiPickerView.swift
@@ -0,0 +1,30 @@
+import ExpoModulesCore
+import WebKit
+import MCEmojiPicker
+
+class EmojiPickerView: ExpoView, MCEmojiPickerDelegate {
+  let onEmojiSelected = EventDispatcher()
+
+  override func layoutSubviews() {
+    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
+    self.addGestureRecognizer(tapGesture)
+  }
+
+  @objc func handleTap(_ gesture: UITapGestureRecognizer) {
+    presentEmojiPicker()
+  }
+
+  func presentEmojiPicker() {
+    let emojiPicker = MCEmojiPickerViewController()
+    let reactRootVC = reactViewController()
+    emojiPicker.sourceView = self
+    emojiPicker.delegate = self
+    reactRootVC?.present(emojiPicker, animated: true)
+  }
+
+  func didGetEmoji(emoji: String) {
+    onEmojiSelected([
+      "emoji": emoji
+    ])
+  }
+}