فهرست منبع

add custom UITableView to show InputBarAccessoryView correctly

cyberta 4 سال پیش
والد
کامیت
e3f2d1be8c

+ 4 - 0
deltachat-ios.xcodeproj/project.pbxproj

@@ -108,6 +108,7 @@
 		30A2EC36247D72720024ADD8 /* AnimatedImageMessageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30A2EC35247D72720024ADD8 /* AnimatedImageMessageCell.swift */; };
 		30B0ACFA24AB5B99004D5E29 /* SettingsEphemeralMessageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30B0ACF924AB5B99004D5E29 /* SettingsEphemeralMessageController.swift */; };
 		30C0D49D237C4908008E2A0E /* CertificateCheckController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30C0D49C237C4908008E2A0E /* CertificateCheckController.swift */; };
+		30E348DF24F3F819005C93D1 /* ChatTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30E348DE24F3F819005C93D1 /* ChatTableView.swift */; };
 		30E8F2132447285600CE2C90 /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30E8F2122447285600CE2C90 /* ShareViewController.swift */; };
 		30E8F2162447285600CE2C90 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 30E8F2142447285600CE2C90 /* MainInterface.storyboard */; };
 		30E8F21A2447285600CE2C90 /* Delta Chat.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 30E8F2102447285600CE2C90 /* Delta Chat.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
@@ -396,6 +397,7 @@
 		30AC265E237F1807002A943F /* AvatarHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarHelper.swift; sourceTree = "<group>"; };
 		30B0ACF924AB5B99004D5E29 /* SettingsEphemeralMessageController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsEphemeralMessageController.swift; sourceTree = "<group>"; };
 		30C0D49C237C4908008E2A0E /* CertificateCheckController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CertificateCheckController.swift; sourceTree = "<group>"; };
+		30E348DE24F3F819005C93D1 /* ChatTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTableView.swift; sourceTree = "<group>"; };
 		30E8F2102447285600CE2C90 /* Delta Chat.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Delta Chat.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
 		30E8F2122447285600CE2C90 /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = "<group>"; };
 		30E8F2152447285600CE2C90 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = "<group>"; };
@@ -788,6 +790,7 @@
 			isa = PBXGroup;
 			children = (
 				30FDB6B624D193DD0066C48D /* Cells */,
+				30E348DE24F3F819005C93D1 /* ChatTableView.swift */,
 				30F8817524DA97DA0023780E /* BackgroundContainer.swift */,
 			);
 			path = Views;
@@ -1489,6 +1492,7 @@
 				AEE6EC412282DF5700EDC689 /* MailboxViewController.swift in Sources */,
 				AEF53BD5248904BF00D309C1 /* GalleryTimeLabel.swift in Sources */,
 				AEE6EC482283045D00EDC689 /* EditSettingsController.swift in Sources */,
+				30E348DF24F3F819005C93D1 /* ChatTableView.swift in Sources */,
 				305961DF2346125100C80F33 /* MessageCellDelegate.swift in Sources */,
 				302B84CE2397F6CD001C261F /* URL+Extension.swift in Sources */,
 				7A9FB1441FB061E2001FEA36 /* AppDelegate.swift in Sources */,

+ 6 - 8
deltachat-ios/Chat/ChatViewControllerNew.swift

@@ -19,12 +19,6 @@ class ChatViewControllerNew: UITableViewController {
 
     /// The `InputBarAccessoryView` used as the `inputAccessoryView` in the view controller.
     open var messageInputBar = InputBarAccessoryView()
-    override var inputAccessoryView: UIView? {
-        if disableWriting {
-            return nil
-        }
-        return messageInputBar
-    }
 
     open override var shouldAutorotate: Bool {
         return false
@@ -112,8 +106,12 @@ class ChatViewControllerNew: UITableViewController {
         fatalError("init(coder:) has not been implemented")
     }
 
-    override func viewDidLoad() {
+    override func loadView() {
+        self.tableView = ChatTableView(messageInputBar: self.disableWriting ? nil : messageInputBar)
+        self.view = self.tableView
+    }
 
+    override func viewDidLoad() {
         tableView.register(NewTextMessageCell.self, forCellReuseIdentifier: "text")
         tableView.rowHeight = UITableView.automaticDimension
         tableView.separatorStyle = .none
@@ -129,7 +127,7 @@ class ChatViewControllerNew: UITableViewController {
         if !disableWriting {
             configureMessageInputBar()
             messageInputBar.inputTextView.text = textDraft
-            messageInputBar.inputTextView.becomeFirstResponder()
+            self.tableView.becomeFirstResponder()
         }
 
         //refreshControl.addTarget(self, action: #selector(loadMoreMessages), for: .valueChanged)

+ 26 - 0
deltachat-ios/Chat/Views/ChatTableView.swift

@@ -0,0 +1,26 @@
+import UIKit
+import InputBarAccessoryView
+
+class ChatTableView: UITableView {
+
+    var messageInputBar: InputBarAccessoryView?
+    override var inputAccessoryView: UIView? {
+        return messageInputBar
+    }
+
+
+    override var canBecomeFirstResponder: Bool {
+        return true
+    }
+
+
+    public init(messageInputBar: InputBarAccessoryView?) {
+        self.messageInputBar = messageInputBar
+        super.init(frame: .zero, style: .plain)
+    }
+
+    required init?(coder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+
+}