我有一个UITableView
,其中有两个单元用于用户放置信息。
第一个单元格:两个按钮以“取消”和“完成”。
第二个单元格:UITextView
用于输入用户类型信息。
这在iPhone 7、6s ...上工作正常,但是在iPhone SE和5C上,屏幕不同。我使用了自动布局,并且在情节提要中似乎可以正常工作。
详细信息:我需要将Height Constraint
设置为TextView才能起作用。
差异可以在下图看到:
故事板:
TableView的约束:
ViewController:
class LiberarViewController : UIViewController, UITableViewDelegate, UITableViewDataSource, UITextViewDelegate {
@IBOutlet weak var tableViewForm: UITableView!
var callback : ((String)-> ())?
override func viewDidLoad() {
tableViewForm.dataSource = self
tableViewForm.delegate = self
// tableViewForm.tableFooterView = UIView()
}
@objc func cancelar(_ sender: Any) {
self.dismiss(animated: true, completion: {})
}
@objc func finalizar(_ sender: Any) {
self.dismiss(animated: true, completion: {})
}
func textViewDidEndEditing(_ textView: UITextView) {
print("End edigint: \(textView.text!)")
}
func numberOfSections(in tableView: UITableView) -> Int {
return 2
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section == 1 {
return "Digite a justificativa: "
}
return nil
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch indexPath.section {
case 0:
let cell = tableView.dequeueReusableCell(withIdentifier: "CellBotoesLiberar") as! CellBotoesLiberar
cell.selectionStyle = .none
cell.btCancelar.addTarget(self, action: #selector(cancelar), for: .touchUpInside)
cell.btFinalizar.addTarget(self, action: #selector(finalizar), for: .touchUpInside)
return cell
case 1:
let cell = tableView.dequeueReusableCell(withIdentifier: "CellJustificativaLiberar") as! CellJustificativaLiberar
cell.txtViewJustificativa.delegate = self
return cell
default: return UITableViewCell()
}
}
}
class CellJustificativaLiberar : UITableViewCell {
@IBOutlet weak var txtViewJustificativa: UITextView!
}
class CellBotoesLiberar : UITableViewCell {
@IBOutlet weak var btFinalizar: UIButton!
@IBOutlet weak var btCancelar: UIButton!
}