テキストビュー内のいくつかUITextView characterRangeAtPoint
を取得するためにコードで使用しようとしていました。そして、それらを引数として使用し、オフセットを取得するために使用しました。iOS 6 では問題なく動作しましたが、iOS 7 で試してみると、テキストビュー内で何を試しても常に返されました。UITextRanges
CGPoints
UITextPositions
UITextRanges
UITextView offsetFromPosition: toPosition:
offset 0
CGPoint
コードは次のとおりです。
// init the textview
textview = [[UITextView alloc] initWithFrame:CGRectMake(10, 50, 300, 500)];
textview.backgroundColor = [UIColor whiteColor];
[self.view addSubview:textview];
// load the txt file for testing
NSError *error;
NSString *content = [[NSString alloc] initWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"test" ofType:@"txt"] encoding:NSUTF8StringEncoding error:&error];
if (error) {
NSLog(@"load string error:%@", [error localizedFailureReason]);
return;
}
// set the text and font
textview.text = content;
UIFont *font = [UIFont systemFontOfSize:18];
textview.font = font;
// get text range at point (100, 100) and string offset from the beginning to this point
UITextRange *textrange = [textview characterRangeAtPoint: CGPointMake(100, 100)];
NSInteger offset = [textview offsetFromPosition:textview.beginningOfDocument toPosition:textrange.start];
NSLog(@"offset = %d", offset);
返されたのoffset
は常に0
でした。が原因かどうかをテストするためにUITextView offsetFromPosition: toPosition:
、次のコードを試しました。
NSInteger offset1 = [textview offsetFromPosition:textview.beginningOfDocument toPosition:textview.endOfDocument];
NSLog(@"offset1 = %d", offset1);
それは私が使用offset1 = 5264
したものによれば正しかったtest.txt
です。したがって、問題は からUITextRange
返されたものtextview characterRangeAtPoint
です。IOS 7characterRangeAtPoint
では、指定された で正しいテキスト範囲が返されなかったようですCGPoint
。そのtextview offsetFromPosition: toPosition:
ため、正しいオフセットを返すことができませんでした。
しかし、IOS 6 で同じコードを使用したところ、非常にうまく機能しました。のリファレンスも確認しcharacterRangeAtPoint
ましたが、有用な情報は見つかりませんでした。
characterRangeAtPoint
IOS 7 で何が起こったのか知っている人はいますか? IOS 6 と同じように機能させるには、どうすればよいですか?