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

时间:2018-02-28 13:26:57

标签: ios swift4 iphone-x inputaccessoryview

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

我有一个在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,视图中的textfield无响应,因为父视图没有定义大小。

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

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

如果您不理解,请告诉我。请提前帮助你。

1 个答案:

答案 0 :(得分:0)

尝试在“inputTextField”

中添加一个顶部锚点
{{\Illuminate\Support\Facades\Auth::guard('admin')->user()->unreadNotifications()->count()}}

我可能错了但不知道顶部在哪里'ChatInputContainerView'的高度为零。