![](/img/trans.png)
[英]Wrong View Height when using inputAccessoryView with External (blue tuth) keyboard
[英]How do I prevent Keyboard from adding its own height constraint when using view as inputAccessoryView
由於各種原因,我嘗試使用自定義視圖作為鍵盤上的輔助視圖,在這種情況下,由於其他一些功能,它比手動鍵盤對齊更受歡迎。
不幸的是,這是一個定義其自身高度的動態視圖。 約束在附件視圖的上下文之外都可以正常工作,沒有錯誤,並且可以正確調整大小
當添加為keyboardAccessoryView時,它似乎會強加當時框架的高度並打破其他高度限制
它顯示為:
"<NSLayoutConstraint:0x600003e682d0 '_UIKBAutolayoutHeightConstraint' Turntable.ChatInput:0x7fb629c15050.height == 0 (active)>"
(其中0
對應於初始化時使用的任何高度
它也被標記為accessoryHeight
應該可以很容易地刪除它,但不幸的是,在我能做到這一點之前,我得到了無法滿足的約束並且系統正在拋出我的高度約束
試過:
在inputAccessoryView
覆蓋中,我嘗試檢查約束並將其刪除,但此時它不存在
設置translatesAutoresizing...Constraints = false
tl;博士
使用視圖作為 KeyboardAccessoryView 是在事后添加自己的高度約束,我可以刪除它嗎?
看起來鍵盤不喜歡帶有高度限制的inputAccessoryView
。 但是,您仍然可以通過使用frame
來獲得具有動態高度的inputAccessoryView
(仍然可以在自定義inputAccessoryView
中使用約束)。
請檢查這個例子:
import UIKit
final class ViewController: UIViewController {
private let textField: UITextField = {
let view = UITextField()
view.frame = .init(x: 100, y: 100, width: 200, height: 40)
view.borderStyle = .line
return view
}()
private let customView: UIView = {
let view = UIView()
view.backgroundColor = .red
view.frame.size.height = 100
view.autoresizingMask = .flexibleHeight // without this line height won't change
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(textField)
textField.inputAccessoryView = customView
textField.becomeFirstResponder()
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
self.customView.frame.size.height = 50
self.textField.reloadInputViews()
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.