6

我看到很少有应用程序正在扩展键盘,但我想知道他们是如何做到的。

这里有2个例子。

文本提示

现在我知道我可以将 inputAccessoryView 添加到 UITextView 但它仍然有一条细线将键盘与 UIToolbar 分开,如下图所示。

在此处输入图像描述

他们是怎么做到的?扩展持有键盘的 UIWindow 或以其他方式?

更新 1 的答案:

所以我使用了 Tyraz 写的解决方案。

  1. 子类 UIToolbar
  2. 我使用 UIView 而不是图像,其背景颜色与键盘渐变的完成颜色相同,并使用 UIViewAutoResizingMaskFlexibleWidth 以便在旋转时覆盖键盘,高度为 3 像素

这是子类 UIToolbar 的代码

- (void)didMoveToSuperview {

    [self.separatorHideView removeFromSuperview];

    CGRect seperatorRect = CGRectMake(self.frame.origin.x,
                                      self.frame.size.height,
                                      self.frame.size.width,
                                      3.0);

    self.separatorHideView = [[UIView alloc]];
    self.separatorHideView.backgroundColor = [UIColor colorWithRed:0.569 green:0.600 blue:0.643 alpha:1.000];
    self.separatorHideView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    [self addSubview:self.separatorHideView];
}

更新 2:这是我如何将其添加到 UITextView 以及我使用什么颜色进行着色的代码。

我使用以下代码将其添加到 viewDidLoad 中的 UITextView

    CustomToolbar *accessoryToolbar = [[CustomToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 38)];
    accessoryToolbar.tintColor = [UIColor colorWithRed:0.569 green:0.600 blue:0.643 alpha:1.000];
    editor.inputAccessoryView = accessoryToolbar;  

这就是应用解决方案后的样子

在此处输入图像描述

4

2 回答 2

8

在 iOS 7 上,您可以轻松创建inputAccessoryView匹配键盘样式:

[[UIInputView alloc] initWithFrame:<#frame#> 
                    inputViewStyle:UIInputViewStyleKeyboard];
于 2013-12-04T11:54:17.043 回答
4

我会尝试使用 inputAccessoryView 加上位于分隔线顶部并“填补空白”的第二个视图。

将 inputAccessoryView 添加到键盘后(覆盖您的辅助 UIView 子类中的 didMoveToSuperview 方法以在发生这种情况时得到通知),将其添加到 inputAccessoryView 的超级视图中。

在您的附件 UIView 子类中应该是这样的:

- (void)didMoveToSuperview {
  [self.separatorHideView removeFromSuperview];

  CGRect seperatorRect = CGRectMake(self.frame.origin.x, 
                                    self.frame.origin.y + self.frame.size.height,
                                    self.frame.size.width,
                                    2.0);

  UIImage *gapGradient = [UIImage imageNamed:@"GapGradient"];
  self.separatorHideView = [[UIImageView alloc]initWithImage:gapGradient];
  self.separatorHideView.frame = seperatorRect;

  [self.superview addSubview:self.separatorHideView];
}

我还会在您的辅助 UIView 子类中覆盖 setFrame 以更新 gapView 的框架,以防键盘的框架发生变化。

于 2012-10-28T10:52:04.523 回答