5

iPhoneのデフォルトのSMSアプリと同じように、送信ボタンとカメラボタンを持つツールバーのUITextViewにUIImageViewを挿入したいと思います。

4

4 に答える 4

6

を使用し、その中でsとsUIScrollViewを管理する方がよいでしょう。 テキストとインラインで画像を追加することはサポートされていません。実際、複数行のテキスト以外は実際にはサポートしていません。UITextViewUIImageViewUITextView

以下のコメントによると、テキスト入力ボックスの一部として画像を取得するために私が考えることができる3つのことがあります。

  1. を使用していませんUITextViewが、代わりにカスタムビューを使用しています。そのようなことを再現するのは難しいです。
  2. それらは、サブビューとしてUIImageViewオーバーをオーバーレイしUITextView、のcontentInsetを設定して、UITextViewオーバーラップがないようにします。
  3. 彼らは、サブビューとサブビューUIViewの両方を含み、UITextView必要UIImageViewに応じてそれらのサブビューを単純に配置するために、別個のものを使用しています。

2と3はどちらも非常に似ており(わずかに異なるアプローチ)、おそらく最善のアプローチです。個人的には、両方のビューの位置を最も細かく制御できるので、おそらく3が最適だと思いますが、2でも問題なく動作するはずです。

于 2012-04-16T20:46:12.803 に答える
1

アーロンに同意します。私が見たものに基づくと、ネイティブSMSアプリは、実際には高度に変更されたTableCellを備えたUITableViewであると思います。TableCellsは、Aaronが提案したように、UITextViewとUIImageViewを含む複合ビューです。

前もってもう少し作業が必要かもしれませんが、上記の要素を使用して独自のUITableCellを定義するカスタマイズは非常に便利であり、iOSの全体的なパラダイムに沿ったものになると思います。ネイティブパラダイムを使用する場合は、それらに反対する/周囲のパラダイムよりもはるかにうまく機能します。

乾杯

于 2012-04-17T02:12:57.270 に答える
0

要件に応じて画像とテキストを含むhtmlファイルを作成し、そのhtmlファイルをwebviewにロードしようとする提案が1つあります。

ここでは、特定のテキストを太字にすることもできます。

見栄えが良く、テキストフィールドだと思います。

Webビューを単純なスクロールビューのようにするには、このメソッドをコードに追加するだけです。

これを書くのを忘れないでください

webView.opaque = NO;

[self hideGradientBackground:webView];

- (void) hideGradientBackground:(UIView*)theView
{
    for (UIView * subview in theView.subviews)
    {
        subview.backgroundColor = [UIColor clearColor];
        if ([subview isKindOfClass:[UIImageView class]])
            subview.hidden = YES;

        [self hideGradientBackground:subview];
    }
}

これがお役に立てば幸いです。

于 2012-04-17T05:46:31.903 に答える
0

UITextViewDelegateとContentInsetを使用して実装できます。

 - (void)viewDidLoad 
 {
    self.textView.delegate = self;
    [self.textView addSubview:self.addedView];
    [self.textView setContentInset:UIEdgeInsetsMake(0, 0, CGRectGetHeight(self.addedView.frame), 0)];
 }

- (void)textViewDidChange:(UITextView *)textView
 {
    NSLog(@"%@",NSStringFromCGSize(textView.contentSize));
    __weak typeof(self) wself = self;
    [UIView animateWithDuration:0.5f animations:^{
      [wself.addedView setFrame:CGRectMake(0, textView.contentSize.height + 10, CGRectGetWidth(wself.addedView.frame), CGRectGetHeight(wself.addedView.frame))];
    }];
 }
于 2014-09-24T09:35:02.557 に答える