2011-07-26 8 views
1

ポイントに最も近い文字のインデックスを取得しようとしています。目的C - コアテキスト位置でインデックスを検索しますか?

以下のコードは、テキストの配置が左に設定されているため、完全にうまく動作します。右または中央に移動すると間違ったインデックスが付けられます。最も近いインデックスをポイントに取得しながらテキストの配置を検討するソリューションは何ですか?

CTLineRef line = (CTLineRef)[lines objectAtIndex:i]; 
index = CTLineGetStringIndexForPosition(line, point); 

EDIT:

私のテキストの配置を合わせて変化する(textAlignmentは、ポイントが行の原点からの相対であるkCTCenterTextAlignment

+0

お元気ですか、下のソリューションをどうやって実装しましたか?私はそれが "CTLineGetStringIndexForPosition(行、CGPointMake(origins [i] .x + point.x、point.y));"のようなものだと仮定しますが、それは私のためには機能しません。あなたはそれを違うのですか? –

答えて

4

に設定していますしている段落スタイルを追加することによって行われます)ので、CTFrameGetLineOriginsを使用して、線の原点のx値をポイントのx値に加算する必要があります。

+0

いつものように素晴らしい答え、ありがとう。私はコアテキストについての知識がどれくらいあるのか不思議でした。あなたが取り組んでいるコアテキストに関連する特定のプロジェクトはありますか? – aryaxt

+0

私はポイントが絶対位置だと思うので、ポイントのx値からラインの原点のx値を引く必要がありますか?少なくとも私の場合は減算でした。 – giftederic

関連する問題