我想在iOS 8自定义键盘中添加类似于上面的单词选择视图。
更新:基于this,键盘的高度可自定义。怎么可能呢?
答案 0 :(得分:2)
您想根据输入更改输入附件视图的大小和内容。不是键盘的框架(输入视图)。标有红色矩形的区域是两种不同状态的输入附件视图。
UIKit
发布与键盘相关的通知。
UIKeyboardWillShowNotification
,UIKeyboardDidShowNotification
,UIKeyboardWillHideNotification
UIKeyboardDidHideNotification
侦听这些通知的对象可以获取与输入视图相关的几何信息(如键盘高度),以调整已编辑的视图。
要根据输入更改输入附件视图,您必须先观察其内容的变化。您可以通过实施UITextFieldDelegate
' textField:shouldChangeCharactersInRange:replacementString:
来实现
方法或倾听UITextFieldTextDidChangeNotification
。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleTextFieldDidChangeNotification:)
name:UITextFieldTextDidChangeNotification
object:_textFieldInInputAccessoryView];
关键是在文本字段发生更改时更改输入附件视图内容和大小。 UIKit将输入附件视图附加到输入视图(键盘)的顶部。如果要在文本字段下方添加带控件的额外行,则需要更新输入附件视图的框架。
- (void)handleTextFieldDidChangeNotification:(NSNotification *)notification
{
// Update the contents/frame of the input accessory view.
// Reload the input views.
[_yourTextField reloadInputViews];
}
答案 1 :(得分:0)
您无法使用iOS 8中的自定义键盘API将键盘扩展到默认框架之外。我在今年的WWDC向Apple工程师询问这个问题时就知道了这一点。
答案 2 :(得分:0)
可以在当前iOS 8中更改键盘的大小
从文档中逐字逐句:" 在iOS 8.0中,您可以在主视图最初在屏幕上绘制后随时调整自定义键盘的高度。"
要调整自定义键盘的大小,请添加一个简单的布局约束。
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];
有关详细信息,请查看Apple的预发布文档here!