如何在iOS自定义键盘中切换单词选择视图(更改高度)?

时间:2014-07-29 07:27:41

标签: ios ios8 ios-app-extension

enter image description here

我想在iOS 8自定义键盘中添加类似于上面的单词选择视图。

  1. 如何动态更改键盘视图矩形大小?和
  2. 通知活动应用(例如内置消息应用)以相应地重新定位输入栏?
  3. 更新:基于this,键盘的高度可自定义。怎么可能呢?

    enter image description here

3 个答案:

答案 0 :(得分:2)

您想根据输入更改输入附件视图的大小和内容。不是键盘的框架(输入视图)。标有红色矩形的区域是两种不同状态的输入附件视图。

enter image description here

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];
}

基于文字Programming Guide for iOS - Custom Views for Data Input

答案 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