1

UIScrollViewサブビューのセットがあり、これらのサブビューのそれぞれにUITextView異なるテキストが含まれている必要があります。このタスクでは、スクロールビューのサブビューを生成するために使用されるビューにPageControl単純なものを追加するために、アップルの「iphonedevcenter」の例を変更しました。UITextViewアプリを(シミュレーターと電話の両方で)実行すると、テキストは表示されませんが、「ユーザーインタラクション」をアクティブにしてクリックすると、テキストが魔法のように表示されます(キーボードも同様)。

誰かが解決策を持っているか、UITextView内部で何か進歩を遂げましたUIScrollViewか?ありがとう。

4

6 に答える 6

7

「偽の」スクロールを強制する問題を解決しました。

textView.contentOffset = CGPointMake(0, 1);
textView.contentOffset = CGPointMake(0, 0);
于 2011-05-05T14:00:37.877 に答える
2

UITextView問題は のサブクラスであるという事実に起因すると思うUIScrollViewので、基本的にはスクロールビューが に埋め込まれていますUIScrollViews。テキストが正しく表示されたとしても、指のスワイプが外側のビューをスクロールするのか、テキスト ビューをスクロールするのかがはっきりしないため、ユーザビリティの問題が発生します。

ええ、Safari はある程度これを行いますが、そうしなければならず、Safari を使用する上で最も楽しい部分ではありません。

これは、システムに逆らって作業していることを示す困難な時期の 1 つだと思います。UI に戻って再考することを強くお勧めします。

于 2008-10-01T04:06:18.223 に答える
1

UITextView が画面外から画面上の領域にスクロールされたときに、UITextView が適切に更新されないという問題に悩まされている可能性があります。

このページの「オフスクリーン UITextViews が正しく更新されない」セクションを確認してください: UIScrollView の複数の仮想ページ

私が使用した解決策は、スクロール ビューが画面に表示され始めたときに強制的に再描画することでした。これは完全に迷惑ですが、問題は解決します。

于 2009-04-15T11:46:17.413 に答える
0

問題は次の可能性が高いですUIScrollViews

次の3つの解決策があると思います。

  • userInteractionEnabledさまざまなコントロールが選択されているときに、有効または無効にします。
  • テキストが静的であると仮定すると、 a のUILabel代わりに a を使用しますUITextView(UILabelは のサブクラスではありませんUIScrollView)
  • に依存するのではなく、独自のビューを実装し、drawRect メッセージでテキストを自分で描画しますUITextView
于 2009-04-15T11:16:27.920 に答える
0

My solution to this problem was different: It only worked when I set the property "Autoresize Subviews” of the UIScrollView to off.

[scrollView setAutoresizesSubviews:NO];
于 2013-11-30T06:49:07.257 に答える
-1

テキスト値の割り当てをscrollViewDidScrollメソッドに配置することで機能します。

サンプルスニペット:


SAMPLE.h

...
@interface myRootUIViewController : UIViewController <UIScrollViewDelegate>
...

コメント:覚えておいてください:UIScrollViewDelegateプロトコルを忘れないでください。


SAMPLE.m

    - (void)viewDidLoad {
       ... whatever is created before and/or after...

       NSString * text = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
                           Nunc semper lacus quis erat. Cras sapien magna, porta non, 
                           suscipit nec, egestas in, arcu. Maecenas sit amet est. 
                           Quisque felis risus, tempor eu, dictum ac, volutpat id, 
                           libero. Ut gravida, purus vitae interdum elementum, tortor 
                           justo porttitor nisi, id rhoncus massa.";

       // calculate the required frame height according to defined font size and
       // given text
       CGRect frame = CGRectMake(0.0, 500.0, self.view.bounds.size.width, 1000.0); 
       CGSize calcSize = [text sizeWithFont:[UIFont systemFontOfSize:13.0]
              constrainedToSize:frame.size lineBreakMode: UILineBreakModeWordWrap];
              // for whatever reasons, contraintedToSize seem only be able to
              // calculate an appropriate height if the input frame height is larger
              // than required. Means: if your text requires height=250 and input
              // frame height=100, then this method won't give you the expected
              // result.

       frame.size = calcSize;
       frame.size.height += 0; // calcSize might be not pixel-precise, 
                               // so add here additional padding pixels
       UITextView * tmpTextView = [[UITextView alloc]initWithFrame:frame];

       // do whatever adjustments
       tmpTextView.backgroundColor = [UIColor blueColor]; // show area explicitly (dev 
                                                          // purpose)
       self.myTextView = tmpTextView;
       self.myTextView.editable = NO;
       self.myTextView.scrollEnabled = NO;
       self.myTextView.multipleTouchEnabled = NO;
       self.myTextView.userInteractionEnabled = NO; // pass on events to parentview
       self.myTextView.font = [UIFont systemFontOfSize:13.0];
       [tmpTextView release];
       [self.scrollView addSubview:self.myTextView];
}

...

- (void)scrollViewDidScroll:(UIScrollView *)sender {
  // for simplicity text is repeated again, of course it can be a member var/etc...
  NSString * text = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
                           Nunc semper lacus quis erat. Cras sapien magna, porta non, 
                           suscipit nec, egestas in, arcu. Maecenas sit amet est. 
                           Quisque felis risus, tempor eu, dictum ac, volutpat id, 
                           libero. Ut gravida, purus vitae interdum elementum, tortor 
                           justo porttitor nisi, id rhoncus massa.";
  self.myTextView.text = text; // assign value within this method and it is
                               // painted as expected.
    }

コメント:

明らかに、サンプルの名前と値を使用してソースコードスニペットを調整しました。うまくいけば、タイプミスはありません。ただし、テキストの値が変更される可能性があるため、実際には異なるフレームサイズが必要になる場合に備えて、コードにはテキストに必要なフレームの高さの計算も含まれています。

実際のテキスト値の割り当てをscrollViewDidScrollメソッドに配置すると、スクロール中などにフラッシュすることなく機能しました(これまでのところiPhoneシミュレーターでのみテストされています)。

お役に立てば幸いです。もちろん、建設的なフィードバック、改善の提案、またはこの問題を解決するための他の方法を歓迎します。

于 2009-04-15T09:52:05.283 に答える