基本上我试图在 inputAccessoryView 属性中创建一个调整大小的 UITextView 。
我有一个 viewController,其方法 canBecomeFirstResponder 返回 true,我通过自定义类(从 XIB 获取它)实例化了一个视图。在这个视图中是一个 UITextView 位于。
我尝试从该类内部调整完整的 inputAccessoryView 的大小。我尝试了几种方法:直接设置框架,尝试使用高度约束。它似乎只调整了一半:
这基本上是我想要的(有或没有自动布局,但在 iOS 7/8+ 中工作):
class MessageInputAccessory: UIView, UITextViewDelegate
{
@IBOutlet weak var textView: UITextView!
func textViewDidChange(textView: UITextView)
{
var contentSize = textView.sizeThatFits(CGSizeMake(textView.frame.size.width, CGFloat.max))
self.frame.size.height = contentSize.height + 20
self.textView.reloadInputViews()
}
}
我找到了这篇文章:在 iOS 8 中更改 inputAccessoryView 的框架。说明正在创建一个自动创建的约束。问题是,它不会为我创造约束。绝不会禁用或启用自动布局(也通过 setTranslatesAutoresizingMaskIntoConstraints())。