在iPhone i中使用intrinsicContentSize的inputAccessoryView无法正常工作

问题描述 投票:0回答:1

请不要投票将尽力解释问题。

我有一个在iphone x之前工作正常的InputAccessoryView,在iphone x中我的inputAssesoryView显示在layoutguide下面的最底部。我发现以下解决方案inputAccessoryView Iphone X

在从上面链接的想法后,我可以将我的文本字段放在布局guid之上,但它变得没有反应。这是因为没有为inputAccessoryView视图定义帧大小。

class ChatInputContainerView: UIView, UITextFieldDelegate {

override var intrinsicContentSize: CGSize {
        return CGSize.zero
    }

required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

lazy var inputTextField: UITextField = {
        let textField = UITextField()
        textField.placeholder = "Enter message..."
        textField.translatesAutoresizingMaskIntoConstraints = false
        textField.delegate = self
        return textField
    }()

override init(frame: CGRect) {
    super.init(frame: frame)
    autoresizingMask = .flexibleHeight

    self.inputTextField.leftAnchor.constraint(equalTo: rightAnchor, constant: 8).isActive = true

        self.inputTextField.bottomAnchor.constraint(equalTo: layoutMarginsGuide.bottomAnchor).isActive = true
        self.inputTextField.rightAnchor.constraint(equalTo: leftAnchor).isActive = true
        self.inputTextField.heightAnchor.constraint(equalTo: heightAnchor).isActive = true


}

}

以下是我使用inputAccessory View的控制器

class chatController: UITextFieldDelegate {


override func viewDidLoad() {
        super.viewDidLoad()
}

lazy var inputContainerView: ChatInputContainerView = {
       // let chatInputContainerView = ChatInputContainerView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 50))

        let chatInputContainerView = ChatInputContainerView()
        chatInputContainerView.chatLogController = self
        return chatInputContainerView
    }()

override var inputAccessoryView: UIView? {
        get {

           return inputContainerView
        }
    }

 override var canBecomeFirstResponder : Bool {
        return true
    }

}

以前我使用以下代码来获取InputAccessoryView的大小,该视图将视图置于底部并具有修复高度。

let chatInputContainerView = ChatInputContainerView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 50))

但现在我使用以下设置inputAccessoryView不能正常工作,视图中的文本字段变得无响应,因为父视图没有大小定义。

override var intrinsicContentSize: CGSize {
            return CGSize.zero
        }
 autoresizingMask = .flexibleHeight

在下面的图像中,您可以看到我的所有控件现在都在safeAreaLayout之上,但它们没有响应。 sample image

如果你不明白,请告诉我。请提前帮助谢谢。

ios swift4 iphone-x inputaccessoryview
1个回答
0
投票

尝试在“inputTextField”中添加顶部锚点

self.inputTextField.topAnchor.constraint(equalTo: topAnchor).isActive = true

我可能错了,但不知道顶部是什么'ChatInputContainerView'将具有零高度。

© www.soinside.com 2019 - 2024. All rights reserved.