如何在iPhone上扩展键盘渐变?

Ama*_*ulo 6 iphone objective-c ios

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

这是两个例子.

Textastic& Prompt

现在我知道我可以将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];
}
Run Code Online (Sandbox Code Playgroud)

更新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;  
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

djr*_*ero 7

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

[[UIInputView alloc] initWithFrame:<#frame#> 
                    inputViewStyle:UIInputViewStyleKeyboard];
Run Code Online (Sandbox Code Playgroud)


Thy*_*raz 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];
}
Run Code Online (Sandbox Code Playgroud)

我还会覆盖附件 UIView 子类中的 setFrame,以更新 gapView 的框架,以防键盘框架发生更改。