6

キーボードを拡張しているアプリはほとんどないようですが、どのように拡張するのか知りたいです。

ここに2つの例があります。

Textastic & Prompt

これで、inputAccessoryView を UITextView に追加できることがわかりましたが、下の画像のようにキーボードと UIToolbar を分ける小さな細い線がまだ残っています。

ここに画像の説明を入力

彼らはどのようにそれをしますか?キーボードを保持する UIWindow を拡張するか、他の方法で拡張しますか?

答えで1を更新:

だから私は Tyraz が書いたソリューションを使用しました。

  1. サブクラス UIToolbar
  2. 画像の代わりに、キーボード グラデーションの仕上げ色と同じ背景色と UIViewAutoResizingMaskFlexibleWidth を使用して UIView を使用し、回転時に高さ 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に加えて、区切り線の上に配置されて「ギャップを埋める」2番目のビューを使用しようとします。

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 に答える