基本上,一旦选择了文本字段,我试图在键盘上方显示UIToolBar。
选择该文本字段进行编辑时出现以下错误:
由于未捕获的异常“ NSGenericException”而终止应用程序, 原因:“无法激活锚点约束 和 因为他们没有共同的祖先。是约束还是它的约束 在不同的视图层次结构中锚定参考项?那是 非法。”
在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)
}
}
}
答案 0 :(得分:0)
注释这些行(textfield附件和视图之间没有通用视图)
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输入视图将始终占据屏幕底部的整个宽度且具有指定的高度,因此只能保留此
toolBar.heightAnchor.constraint(equalToConstant: 80).isActive = true
答案 1 :(得分:0)
toolBar不会作为错误消息状态添加到视图。
self.view.addSubview(toolBar)