iOS 8自定义键盘:更改高度

我试图在iOS 8中创建一个自定义键盘来替换普通键盘。我确实进行了搜索,无法确定是否可以创建比现有iOS键盘高的键盘。我替换了UIInputView,但无法更改对我可用的高度。



皈依舞
浏览 935回答 3
3回答

精慕HU

最近,Apple更新了其App扩展编程指南,以更改自定义键盘扩展的高度:CGFloat _expandedHeight = 500;NSLayoutConstraint *_heightConstraint = [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0.0 constant: _expandedHeight];[self.view addConstraint: _heightConstraint];

守着一只汪

这是我发现导致高度正确更新的最小解决方案。似乎有两个关键组成部分:translatesAutoresizingMaskIntoConstraints设置为的视图false需要添加到视图层次结构中。高度约束的添加时间不得早于viewWillAppear。我仍然Unable to simultaneously satisfy constraints在日志中看到错误,但是无论如何看来工作正常。我还仍然看到一个跳跃,在该跳跃中,高度最初设置为默认值,然后再跳跃到设置值。我还没有找到解决这些问题的方法。import UIKitclass KeyboardViewController: UIInputViewController {    var heightConstraint: NSLayoutConstraint!    override func viewWillAppear(animated: Bool) {        super.viewWillAppear(animated)        self.inputView.addConstraint(self.heightConstraint)    }    override func viewDidLoad() {        super.viewDidLoad()        let dummyView = UILabel(frame:CGRectZero)        dummyView.setTranslatesAutoresizingMaskIntoConstraints(false)        self.view.addSubview(dummyView);        let height : CGFloat = 400        self.heightConstraint = NSLayoutConstraint( item:self.inputView, attribute:.Height, relatedBy:.Equal, toItem:nil, attribute:.NotAnAttribute, multiplier:0.0, constant:height)    }}Swift 4更新:import UIKitclass KeyboardViewController: UIInputViewController{    private weak var _heightConstraint: NSLayoutConstraint?    override func viewWillAppear(_ animated: Bool)    {        super.viewWillAppear(animated)        guard nil == _heightConstraint else { return }        // We must add a subview with an `instrinsicContentSize` that uses autolayout to force the height constraint to be recognized.        //        let emptyView = UILabel(frame: .zero)        emptyView.translatesAutoresizingMaskIntoConstraints = false        view.addSubview(emptyView);        let heightConstraint = NSLayoutConstraint(item: view,                                                  attribute: .height,                                                  relatedBy: .equal,                                                  toItem: nil,                                                  attribute: .notAnAttribute,                                                  multiplier: 0.0,                                                  constant: 240)        heightConstraint.priority = .required - 1        view.addConstraint(heightConstraint)        _heightConstraint = heightConstraint    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS