1

我正在使用 JSQMessages 构建一个聊天应用程序。我试图通过覆盖 deleteBackward() 函数来关闭 UITextView 元素中的“退格”。我可以破解我想避免的 JSQ 框架核心,并且我尝试过强制向下转换,但这也不起作用。如何覆盖在当前类 (JSQMessagesViewController) 的树深处引用的类 (UITextView) 实例的函数。

这是代码的要点:

在我的 ChatViewController.swift 文件中

class ChatViewController: JSQMessagesViewController, UICollectionViewDataSource, UIActionSheetDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    ....

    override func viewDidLoad() {
    super.viewDidLoad()

    var user = PFUser.currentUser()
    self.senderId = user.objectId
    self.senderDisplayName = user[PF_USER_FULLNAME] as! String

    //here's the important line
    let base = self.inputToolbar.contentView.textView
    let newtexview = base as! UITextViewNB

    .....        

}

在我的keyboard.swift文件中

class UITextViewNB: UITextView {

    override func deleteBackward() {
        // blank because I just want to shut it off
    }
}

我显然在概念上遗漏了一些东西。

4

1 回答 1

0

as操作符家族实际上并没有改变底层对象的类。他们只是告诉编译器生成代码以确保对象类已经正确,然后将对象视为新类型以供将来的代码生成。仅仅因为您将 String 转换为 Int 实际上并不会改变 String 的任何内容。

我不熟悉您提供的框架,但是您可以尝试的一件事是获取现有的 textView,使新的 UITextViewNB 配置相同,然后删除现有的 UITextView 并替换为新的。不要忘记将新的文本视图分配给 ....contentView.textView。完全不清楚这是否可行,甚至可以分配 contentView.textView 。

于 2015-09-16T16:29:11.190 回答