0

iPhoneメッセージングアプリのUITextViewで作業しています。UITextViewのサブビューとしてUIImageを追加しました。UITextViewフレームの高さのようにUIImageフレームサイズのサイズを変更したい。これをコーディングしましたが、テキストが数文字で次の行に入ると、画像のフレームの高さが増加しません。さらに数文字入力すると、画像のフレームサイズが大きくなります。

    messageTextView = [[UITextView alloc] initWithFrame:CGRectMake(35, 5, 210, 30)];
    messageTextView.delegate = self;
    messageTextView.backgroundColor = [UIColor clearColor];
    messageTextView.clipsToBounds = NO;  
    messageTextView.font = [UIFont fontWithName:@"Helvetica" size:14];

    textViewImageView = [[UIImageView alloc]initWithFrame: CGRectMake(0, 0, 210, 30)];
    textViewImageView.image = [UIImage imageNamed: @"textbg.png"];
    textViewImageView.contentMode    = UIViewContentModeScaleToFill;
    textViewImageView.contentStretch = CGRectMake(0.5, 0.5, 0, 0);

    [messageTextView addSubview: textViewImageView];
    [messageTextView sendSubviewToBack: textViewImageView];
    [messageTextView addSubview:textViewLabel];
    [self.view addSubview:messageTextView];


-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
        CGRect frame = messageTextView.frame;
        frame.size.height = messageTextView.contentSize.height;

        messageTextView.frame = CGRectMake(35, 5, 210, frame.size.height);
        textViewImageView.frame = CGRectMake(0, 0, 210, frame.size.height);
}

テキストが次の行に入るときにUIImageviewの高さを上げるために問題を解決するのを手伝ってくれる人がいますか?前もって感謝します。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

4

1 に答える 1

0

ここに画像の説明を入力してください

変化する

 [messageTextView addSubview: textViewImageView];

 textViewImageView = [[UIImageView alloc]initWithFrame: CGRectMake(0, 0, 210, 30)];

 textViewImageView.frame = CGRectMake(0, 0, 210, frame.size.height);

の中へ

 [messageTextView.superview addSubview: textViewImageView];

 textViewImageView = [[UIImageView alloc]initWithFrame: CGRectMake(35, 5, 210, 30)];

 textViewImageView.frame = CGRectMake(35, 5, 210, frame.size.height);

私が今テストしたように、それはうまくいきます。

編集2私のテストで。

TestViewController.h

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController <UITextViewDelegate>{

}

@property (nonatomic, strong) IBOutlet UITextView *textView;
@property (nonatomic, strong) IBOutlet UIImageView *imageView;


@end

TestViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.textView.delegate = self;

    // Do any additional setup after loading the view, typically from a nib.
}

-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    CGRect frame = self.textView.frame;
    frame.size.height = self.textView.contentSize.height;

    self.textView.frame = frame;
    self.imageView.frame = frame;

    return YES;
}
于 2012-07-20T16:23:26.420 に答える