複数の行を持つことができるUITextViewがあります。私が興味を持っているのは、特定の行(1行目、2行目、3行目などは関係ありません)上のカーソルの位置です。
私はUITextRange.startをログに記録してきました。これにより、必要なもの、つまりオフセットプロパティが正確に得られます。
cp <UITextPositionImpl: 0x6e93260> <<WebVisiblePosition: 0x6e92d00>(offset=5, context=([d|], [u+0064|u+0000])>
私の質問は、offset = 5を単純な整数にするにはどうすればよいですか?
これが私のコードです:
UITextRange *caretPositionRange = textView.selectedTextRange;
NSLog(@"cp %@", caretPositionRange.start);
必要なのは、int cp=caretPositionRange.start.offsetのようなものだけです。これは機能しません。
編集:
明確にするために、TextView全体ではなく、各行のカーソル位置に特に関心があります。したがって、これは実際には機能しません。
UITextRange *caretPositionRange = tv.selectedTextRange;
int caretPosition = [tv offsetFromPosition:tv.beginningOfDocument
toPosition:caretPositionRange.start];
これにより、行ごとに異なる位置が得られるためです。
編集2:
ジェシーによって与えられた以下の答えは本当にうまくいきます。startOfLine = nilかどうかをチェックしなかったため、初めてEXC_BAD_EXCESSを取得したので、nilでないかどうかをチェックすることに注意してください。