gpt4 book ai didi

ios - 更改 UIToolBar 的 NSConstraints 时应用程序崩溃

转载 作者:行者123 更新时间:2023-11-29 05:20:21 24 4
gpt4 key购买 nike

本质上,我试图在选择文本字段后在键盘上方显示 UIToolBar。

选择要编辑的文本字段时出现以下错误:

Terminating app due to uncaught exception 'NSGenericException', reason: 'Unable to activate constraint with anchors and because they have no common ancestor. Does the constraint or its anchors reference items in different view hierarchies? That's illegal.'

在 viewDidLoad 中我执行以下操作:

let toolBar = UIToolbar()
var items = [UIBarButtonItem]()

items.append(
UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
)

items.append(
UIBarButtonItem(title: "Tool Bar Text", style: .plain, target: self, action: #selector(confirmSignature))
)

items.append(
UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
)

toolBar.setItems(items, animated: true)
toolBar.tintColor = .white
toolBar.barTintColor = UIColor.red



toolBar.translatesAutoresizingMaskIntoConstraints = false


if #available(iOS 11.0, *) {
let guide = self.view.safeAreaLayoutGuide
toolBar.trailingAnchor.constraint(equalTo: guide.trailingAnchor).isActive = true
toolBar.leadingAnchor.constraint(equalTo: guide.leadingAnchor).isActive = true
toolBar.bottomAnchor.constraint(equalTo: guide.bottomAnchor).isActive = true
toolBar.heightAnchor.constraint(equalToConstant: 80).isActive = true

}
else {
NSLayoutConstraint(item: toolBar, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1.0, constant: 0).isActive = true
NSLayoutConstraint(item: toolBar, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1.0, constant: 0).isActive = true
NSLayoutConstraint(item: toolBar, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1.0, constant: 0).isActive = true

toolBar.heightAnchor.constraint(equalToConstant: 44).isActive = true
}

exampleTextField.inputAccessoryView = toolBar

作为扩展,我在选择文本字段时执行以下操作:

extension myTableViewName: UITextFieldDelegate {
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == exampleTextField {
let toolBar = UIToolbar()

view.addSubview(toolBar)
}
}
}

最佳答案

注释这些行(文本字段附件和 View 之间没有共同的 View )

let guide = self.view.safeAreaLayoutGuide
toolBar.trailingAnchor.constraint(equalTo: guide.trailingAnchor).isActive = true
toolBar.leadingAnchor.constraint(equalTo: guide.leadingAnchor).isActive = true
toolBar.bottomAnchor.constraint(equalTo: guide.bottomAnchor).isActive = true

由于工具栏输入 View 将始终占据底部屏幕的整个宽度和指定的高度,因此您只能保留此

toolBar.heightAnchor.constraint(equalToConstant: 80).isActive = true

关于ios - 更改 UIToolBar 的 NSConstraints 时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58729404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com