4

UITextViewXCode 4 以降の contentInset 値の何らかの変更を追跡したデバイスで、奇妙なテキスト ラッピングの問題をデバッグしています。

このバグを紹介するために使用しているサンプル コードを次に示します。

NSString *message = @"How are you doing?";
CGSize messageDimensions = [message sizeWithFont:[UIFont systemFontOfSize:15.0]
                               constrainedToSize:CGSizeMake(self.view.frame.size.width,9999)
                                   lineBreakMode:UILineBreakModeWordWrap];
CGFloat xOffset = 20;
CGFloat yOffset = 20;

CGRect textViewFrame = CGRectMake(xOffset, yOffset, messageDimensions.width+16, messageDimensions.height+16);

self.textView = [[[UITextView alloc] initWithFrame:textViewFrame] autorelease];
self.textView.font = [UIFont systemFontOfSize:15.0];
self.textView.text = message;
self.textView.editable = NO;

[self.view addSubview:self.textView];

iOS 5 シミュレーターと iPhone 4 でコードを実行している 2 つのスクリーンショットが添付されています。

iOS5 を実行している iPhone 4 は次のとおりです。

デバイス

iOS5.0 を実行しているシミュレーターは次のとおりです。

シミュレーター

ご覧のとおり、一方ではラップされていますが、他方ではラップされていません。iOS4 デバイスでのラッピングを防ぐために、次の行を変更する必要があります。

CGRect textViewFrame = CGRectMake(xOffset, yOffset, messageDimensions.width+16, messageDimensions.height+16);

+16 ではなく +17 のパディングを設定します。

UITextViewこれが既知のバグであるかどうか、およびパディング量がハードコーディングする代わりに参照できるUIKitのどこかにある定数値であるかどうか、誰か教えてもらえますか?

ありがとう!

4

0 に答える 0