iOS 8自定义键盘的高度限制根本不起作用

Posted

技术标签:

【中文标题】iOS 8自定义键盘的高度限制根本不起作用【英文标题】:Height constraint to iOS 8 custom keyboard not working at all 【发布时间】:2015-03-03 00:17:00 【问题描述】:

我尝试使用以下代码更改键盘的高度(来自https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html

CGFloat _expandedHeight = 500;
NSLayoutConstraint *_heightConstraint = [NSLayoutConstraint constraintWithItem: self.keyboard attribute: NSLayoutAttributeHeight relatedBy: NSLayoutRelationEqual toItem: nil attribute: NSLayoutAttributeNotAnAttribute multiplier: 0.0 constant: _expandedHeight];
[self.keyboard addConstraint: _heightConstraint];

但它并没有改变高度。 (self.keyboard 来自 @property (strong,nonatomic) Keyboard *keyboard;)。我在键盘内部也有一个视图 (self.keyboard.view1)。

View1 在情节提要中也有约束(尾随空格到:Superview,前导空格到:Superview,底部空格到:Superview,顶部空格到:Superview)。

【问题讨论】:

【参考方案1】:

您不应该将乘数设置为 1.0 而不是 0.0?

CGFloat _expandedHeight = 500;
NSLayoutConstraint *_heightConstraint = [NSLayoutConstraint constraintWithItem: self.keyboard attribute: NSLayoutAttributeHeight relatedBy: NSLayoutRelationEqual toItem: nil attribute: NSLayoutAttributeNotAnAttribute multiplier: 1.0 constant: _expandedHeight];
[self.keyboard addConstraint: _heightConstraint];

更新:

此链接似乎包含您要执行的操作的代码。在这里他们将约束添加到键盘控制器的 inputView 中。

iOS 8 Custom Keyboard: Changing the Height

【讨论】:

我改变了它,但它仍然没有改变高度。我还将self.keyboard 更改为self.view 文档中的注释说:“在 iOS 8.0 中,您可以在主视图最初在屏幕上绘制后随时调整自定义键盘的高度。”所以看起来你必须在屏幕上显示之后调用你的代码。你在这样做吗? 我注意到其他地方有一条评论说,在该函数中,您应该在更改之后而不是之前调用 [super updateViewConstraints]。可能不会有所作为,并且可能是您已经在做的事情。我也认为这个函数实际上被调用了? 我没有在那之前进行更改,但是当我这样做时,什么也没发生。我不确定该函数是否被调用,而且很难判断,因为您无法从键盘登录。 您必须能够在该函数的调试器中放置一个断点以查看其是否输入?

以上是关于iOS 8自定义键盘的高度限制根本不起作用的主要内容,如果未能解决你的问题,请参考以下文章

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

iOS自定义键盘高度启动故障

键盘完成键动作swift iOS不起作用

iOS 8 自定义键盘:更改高度而不发出警告“无法同时满足约束...”

在 iOS9 公测中设置自定义键盘高度

播放声音的 iOS 8 自定义键盘