問題タブ [uitextinputtraits]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - iOS 7: UITextView UITextInputTraits バグ?
今日、 Revealに取り組んでいるときに、iOS 7 のUITextViewのUITextInputTraitsプロトコルの処理にバグがあることに気付きました。
このUITextInputTraits
プロトコルには、ユーザーが をタップしたときにどのような種類のキーボードを表示するかを設定するメソッドがありますUITextView
。
iOS 7 では、テキスト選択を有効にするかどうかを制御するための新しいselectable
プロパティ onも導入されました。これは、UITextView をサブクラス化して no を返すか、代わりに を設定して適切なデリゲート コールバックを処理し、発生する選択を停止するUITextView
必要があった iOS の以前のリリースで必要なメソッドよりもはるかに優れています
。canBecomeFirstResponder
inputDelegate
残念ながら、iOS 7 で と の両方を NO に設定すると、すべての
editable
メソッドが機能しなくなります。それらのいずれかを呼び出そうとすると、アプリは例外でクラッシュします。プロトコルで宣言されたメソッドのいずれかを呼び出すと、インスタンスが YES を返すため、これは奇妙
です。selectable
UITextInputTraits
instance does not respond to selector
UITextView
respondsToSelector:
UITextInputTraits
これは iOS 7 のバグのように思えます。Apple には、rader://15063164 として報告しました。
また、(ストーリーボードではなく) コードを介して作成された UITextView の場合、このバグは表現されないことにも気付きました。理由はまだわかりません。追加のプロパティが動作している可能性や、UITextView がinitWithCoder:
ではなく
初期化されているという事実がinitWithFrame:
原因で、別の状態になっている可能性があります。
バグを示すいくつかのコード:
他の誰かがこれを見たことがありますか?または何かアイデアはありますか?
ios - カスタム UITextInput 実装が多段階の入力候補を表示しない
カスタムUITextInput
ベースのテキスト エディタを使用しています。マークされたテキストを介した多段階入力を除いて、非常にうまく機能します。
マークされた領域が正しくレンダリングされ、マークされたテキストが挿入されますが、キーボードの上の候補リストが空白です。
たとえば、標準の UITextView で候補を表示する日本語 (かな) キーボードは次のとおりです。
そして、これが同じマークされたテキストを表示するカスタム エディターです。
この問題のデバッグに数日を費やしたところ、原因はメソッドに対してUIKeyboardImpl
返されたプライベート クラスであることがわかりましたNO
delegateSupportsCorrectionUI
このメソッドをカテゴリ on でオーバーライドして代わりにUIKeyboardImpl
返すYES
と、テキスト エディターで多段階の入力候補が正しく表示されます。ただし、これは問題の根本的な原因に対処していません (そして使用できません)。
また、Apple の SimpleTextInput サンプル コードも詳しく調べました。これにより、基本的な Core Text エディターが実装されます。SimpleTextInput は多段階の入力候補を正しく表示しますが、その実装に単一の違いを見つけることができず、UITextInput
それが機能し、私のものが壊れているようには見えません。
(実際、SimpleTextInput サンプルのマルチステージ入力を表示する機能を「壊す」ことはできません。そのため、UITextInput
実装に重点を置いているのは間違っていると思います。それはまったく別のことです。)
ios - iOS: QuickType キーボードの提案は UITextInput プロトコルでどのように機能しますか?
UITextInput
、UIKeyInput
およびUITextInputTraits
プロトコルを使用して実装されたテキスト入力ビューがあります。
基本的なテキストの入力と削除は、 と を介して正常に機能しinsertText:
ますdeleteBackward
。ただし、QuickType の提案はこれらのメソッドでは受信されず、QuickType がこれらのプロトコルとどのように相互作用するかに関するドキュメントを見つけることができません。
QuickType 入力を受け取るには、これらのプロトコルをどのように実装すればよいですか?
swift - UITextInputTraits のプロパティを割り当てることができません
UITextInputTraits に準拠するオブジェクトとして UITextView にアクセスすると、奇妙なコンパイル エラーが発生します。
「プロパティに代入できません: 'self' は不変です」
ただし、プロパティがプロトコルで明示的に宣言されている場合、UITextInputTraits から継承せずに正常にコンパイルされます。
また、プロパティの宣言は UITextInputTraits と同じです。
スウィフト 4.2、XCode 10.1
swift - UITextInputMode が iOS 13 の英数字パッドで機能しない
アプリには 2 つのローカライズがあります (英語とアラビア語)。多くの UITextFields のキーボード タイプをdecimalPadに設定しました。これらのフィールドには、英語のみの小数点を強制する必要があります。ただし、アプリの言語がアラビア語の場合、キーパッドはアラビア語で表示されます。UITextField をサブクラス化し、 textInputModeをオーバーライドすることにより、iOS 12 まで正常に動作します。コードは次のとおりです。
iOS 13 では、上記のコードは効果がありません。iOS 13 でデフォルトでシステム絵文字キーボードを表示するに従いました。textInputContextIdentifier をオーバーライドしますが、それでも成功しません。
PS: Number、Asci などの他のキーボード タイプでも問題なく動作します。問題は小数点パッドでのみ発生します。