問題タブ [nstextstorage]
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 - ユーザーがどこにでも入力したときにUITextViewにデフォルトのNSFont属性を強制的に使用させる方法
2 つの異なるフォントUITextView
で表示されている があります。NSAttributedText
想像してみてください: 「ここにサンプルテキストがあります。」
ユーザーが文字 " t "まで削除するか、テキストの中央を選択して "hahaha" と入力すると、新しいテキストはBoldになります。したがって、次のようになります。
「テハハハクストのサンプルはこちら」または「サンプルテキストはははここに」
SO:どうすればこれを防ぐことができますか? つまり、UITextView
ユーザーが入力を開始したときに、特定のフォントがどこにあるかに関係なく、特定のフォントのみを使用するようにするにはどうすればよいでしょうか。
注: inのtypingAttributes
プロパティを設定しようとしましたが、コンテンツのサイズが変更され、うまくいきません。UITextView
-textView:shouldChangeTextInRange:
objective-c - AppKit でのテキスト幅測定のパフォーマンス
AppKit で多数の NSString オブジェクト (100 万など) の幅を非常に高速に測定する方法はありますか? 私はこれを行うために3つの異なる方法を試しました:
いくつかのパフォーマンス メトリックを次に示します 。
NSLayoutManager は明らかに進むべき道ですが、問題は
遊んでみたい場合は、こちらが github プロジェクトです。
ios - Swift で文字列を使用して NSTextStorage を初期化する方法
別の問題をより小さな部分に分解するために、すべての TextKit コンポーネントをセットアップしようとしています。ただし、初期化方法を変更するとクラッシュしますNSTextStorage
。テスト目的で、プロジェクトを次のように単純化しました。
EXC_I386_GPFLTenumerateLineFragmentsForGlyphRange
の例外コードでクラッシュします。そのコードはあまり説明的ではありません。基本的な問題は、私がどのように初期化しているかにかかっているようです。NSTextStorage
交換したら
これとともに
それは動作します。私は何を間違っていますか?
ios - タップから UILabel の文字のインデックスを取得する
UILabel でタップされた文字のインデックスを取得したいと思います。UILabel をサブクラス化しました。私のawakeFromNib()にはこれがあります:
最初の文字をタップし、touchesEnded で 0 のインデックスを取得するように、ラベルの最初の 5 文字に対して希望どおりに機能しています。
var touchedCharacterIndex = layoutManager.characterIndexForPoint(touch.locationInView(self), inTextContainer: textContainer, fractionOfDistanceBetweenInsertionPoints: nil)
しかし、UILabel の最初の 4 文字を超えてどこかをタップすると、4 または 0 が返されますが、これは正しくありません。
ありがとう、
アップデート
コメントの提案から、私はこれを追加しました:
、 、layoutSubviews()
、、awakFromNib
のセッターでこれを呼び出します。bounds
frame
attributedText
text
そして、テキストの長さが21の場合、最初の文字をタップすると6になるなど、奇妙なインデックスが表示されます.
objective-c - NSTextStorage - テキスト内の戻り文字 (改行) を見つける方法
NSTextStorage では、次のように現在のポインター位置に時間文字列を挿入します。
これまでのところ、それは完璧に機能します。しかし、次の行の先頭にポインターを配置したいと考えています。明らかに、これは次の戻り文字の直後です。
次の戻り文字を見つけて、textStorage
そこにポインターを配置する方法は? このタスクのヒントは Web で見つかりませんでした。助けてください ...
ios - iOS: カスタム NSTextStorage を使用した UITextView がクラッシュする
Swift で iOS 9 アプリケーションを作成しています。UITextView をホストするビュー コントローラーがあり、それにカスタム NSTextStorage オブジェクトを割り当てています。NSTextStorage は今のところ基本的なものです。すべてが正しく機能し、テキストが UITextView に表示されますが、テキストをタップして編集すると、次の例外が発生してアプリケーションがクラッシュします。
カスタム NSTextStorage オブジェクトを UITextView から削除すると、機能します。
ビュー コントローラーは、ストーリーボードのモーダル セグエを使用して読み込まれます。テキスト コンテンツを読み込み、viewDidLoad メソッドで UITextView オブジェクトと NSTextStorage オブジェクトを構成します。
UtilityQueue
およびMainQueue
対応するディスパッチ キューへの参照を保持するヘルパー コンテンツです。
私のカスタムNSTextStorage
クラスは次のようになります。
何か案は?よろしくお願いいたします。