プロトコルをサポートするにはUIAccessibilityReadingContent
、その行に関する質問に答える UITextView が必要です。これらは、実装する必要があるプロトコルのメソッドです。
accessibilityLineNumberForPoint:
<- 座標を指定して行番号を返すaccessibilityContentForLineNumber:
<- 指定された行のテキストを返しますaccessibilityFrameForLineNumber:
<- 行番号を指定して、そのフレームを返しますaccessibilityPageContent
<- テキスト コンテンツ全体。私が持っていること。:)
私は NSLayoutManager が私を助けることができると考えていますが、私はそれを経験していません。私はそれのいくつかを理解しました(私は思う)が、まだ助けが必要です。
Apple には、テキスト ビューの行数を取得できるサンプル コード ( here ) があります。
NSLayoutManager *layoutManager = [textView layoutManager];
unsigned numberOfLines, index, numberOfGlyphs =
[layoutManager numberOfGlyphs];
NSRange lineRange;
for (numberOfLines = 0, index = 0; index < numberOfGlyphs; numberOfLines++){
(void) [layoutManager lineFragmentRectForGlyphAtIndex:index
effectiveRange:&lineRange];
index = NSMaxRange(lineRange);
}
lineRange
上記で、このメソッドを使用して直線四角形を計算できると思いますNSLayoutManager
:
- (NSRect)boundingRectForGlyphRange:(NSRange)glyphRange inTextContainer:(NSTextContainer *)container
そして、次lineRanges
を使用してポイントの行番号を計算できるはずです(lineRange
グリフインデックスを含む を見つけることにより:
- (NSUInteger)glyphIndexForPoint:(CGPoint)point inTextContainer:(NSTextContainer *)container fractionOfDistanceThroughGlyph:(CGFloat *)partialFraction
では、行番号を指定して行の内容を ( として) 取得するにはどうすればよいNSString
でしょうか?