5

私のアプリでは、化学式(H2O、Na^2 +)を入力する必要があります。下付き文字や上付き文字が入力プロセスを混乱させる可能性があるため、カスタムキーボードを作ることにしました。UIControlをサブクラス化せずにiOS用のカスタムテキストフィールドとキーボードを作成できますか?

ユーザが数字を下付き文字として入力すると、その数字は下付き文字として画面に表示されます。私がこれを行うために見つけた唯一の方法はNSAttributedStringを使用することです。これは明らかにCoreTextでしか動作しません。私はCoreTextをUITextFieldに持つことができないので、カスタムテキストフィールドも作成する必要があります。私はUITextViewを調べていましたが、フォントのスタイルがテキスト全体で一貫していなければならないことを文書で読んでいます。つまり、添え字を付けることはできません。

どちらの場合でもUIControlをサブクラス化してゼロから開始する必要がありますか?それとも、キーボード/テキストフィールドのプロパティのいくつかを既に持っている別のクラスがありますか?

答えて

5

はい、UIViewの独自のサブクラスを作成する必要があります。

しかし、あなたは簡単にそれがYESを返すcanBecomeFirstResponderをオーバーライド、UIKeyInputプロトコルを採用してUITapGestureRecognizerを追加することにより、キーボード入力をサポートすることができます。

[self addGestureRecognizer: 
    [[UITapGestureRecognizer alloc] initWithTarget:self 
              action:@selector(becomeFirstResponder)]]; 

私は、ユーザーがテキストと使用自動修正の範囲を選択できるようにしたいですそれは難しく、プロトコルUITextInputを採用する必要があります。キーボードのカスタマイズ

は本当に簡単です:どちらか

  • 、あなたはどちらかあなたがキーボードに付属のカスタムビューを表示することができinputAccessoryView
  • をオーバーライドし、あなたがinputViewを上書きするので、そのカスタムビューを返します。キーボードの代わりに表示されます。