3

アプリ内にたくさんのテキストビューがあります。なんらかの理由で、UITextView テキストをプログラムで (インターネットから) 設定するか、インターフェイス ビルダー (ハードコード) で設定するかに関係なく、テスト時にそのテキスト ビューに移動すると空白になります。しかし、スクロールするとすぐに、すべてのテキストがどこからともなく現れます。明確にするために、十分なテキストがないためにテキストビューがスクロールしないと言っているのではありません。テキストビューにはテキストがプログラムされていますが、アプリの実行中は、テキストビューが実際にスクロールされるまでテキストは表示されず、テキストが表示されます。

誰でもこれを修正する方法を知っていますか? ビューのリンクを解除して再リンクを試みました。

コード: h ファイル

@interface AboutViewController : UIViewController 
{

    IBOutlet UITextView *textView;
    NSMutableData *responseData;
    NSString *res;
}
@property(nonatomic,retain)IBOutlet UITextView *textView;
@property (nonatomic,retain)NSMutableData *responseData;

@end

mファイル

#import "AboutViewController.h"
@interface AboutViewController ()

@end

@implementation AboutViewController
@synthesize responseData= _responseData;
@synthesize textView;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {

        NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.someurl.com"]];


        [NSURLConnection connectionWithRequest:req delegate:self];
    }
    return self;
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

    if (!_responseData) {
        [self setResponseData:[NSMutableData data]];
    }

    [_responseData appendData:data];
}


  - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)URLresponse {

    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)URLresponse;

    if (![httpResponse isKindOfClass:[NSHTTPURLResponse class]]) {
        NSLog(@"Unknown response type: %@", URLresponse);
        return;
    }


}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection {

    res=[[NSString alloc] initWithData:_responseData encoding:NSUTF8StringEncoding];

    textView.text = res;

    NSLog(@"RES:%@",res);
}

- (void)viewDidLoad
{
    [super viewDidLoad];

}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
-(void)dealloc{
    [super dealloc];
    [res release];
}
@end
4

2 に答える 2

4

テキストを設定しているときに UITextView が表示されないため、テキストが描画されていないと推測しています。

UITextView が表示されたら、次のようにして強制的にテキストを描画できます。

[textView setNeedsDisplay];

または多分これ:

[textView layoutSubviews];

それ以外の場合は、既に表示されるまで UITextView の text プロパティを設定しないでください。

その他の可能性:

  1. あなたの UITextView は、あなたの UITextView を含むビューのフレーム内にありますか? 親ビューがサブビューをクリップせず、UITextView が親ビューのフレームの外側にある場合、問題になる可能性があります。親ビューが親の親ビューの境界外にある、または親の親の親ビューの境界外にあるなどの問題も考えられます。
  2. テキストビューに大量のテキストをロードしようとしていますか? もしそうなら、 textView.text = @"test"; のような簡単なことをしてみてください。それが機能するかどうかを確認します。
  3. あなたの textView は UIScrollView または UIWebView のサブビューですか? これは確かに問題を引き起こす可能性があります。
  4. あなたの textView は別のビューの背後にありますか? その場合は、テキスト ビューを前面に配置して、問題が解決するかどうかを確認してください。

一般に、UITextView がテキストを描画しないというレイアウトの問題があります。何らかの理由で、テキストを描画する必要があるとは考えていません。たぶん、それが画面上または目に見えるとは思わないでしょう。

悲しいかな、最も絶望的な解決策は、スクロールをシミュレートすることです。

textView.contentOffset = CGPointMake(0, 1);
textView.contentOffset = CGPointMake(0, 0);
于 2012-06-21T22:51:17.103 に答える
0

textViewロード中に試してみてください

NSAttributedString *oldtext = objTextView.attributedText;

[objTextView removeFromSuperview];

objTextView.attributedText = oldtext;

[self.view addSubview:objTextView];

私の場合、私のテキストはattributed

于 2013-01-08T08:11:13.500 に答える