24/7 twenty-four seven

iOS/OS X application programing topics.

2つ以上の UIScrollView (UITableView, UITextView などを含む) が存在するビューで StatusBar のタップで先頭に戻る機能を有効にするには。

UIScrollView 系のビューが2つ以上存在するとき、ステータスバーをタップして一気に先頭にスクロールする機能を有効にするには、先頭にスクロールする機能を有効にしたいスクロールビューのみ scrollsToTop プロパティを YES にし、それ以外のスクロールビューは scrollsToTop を NO にします。


要するに scrollsToTop が YES のスクロールビューが1つだけの場合に、ステータスバーをタップする機能が働きます。


UIScrollView と UITextView を2つ使う場合の例です。
テキストビューの scrollsToTop プロパティを NO にしているので、ステータスバーをタップしたときはテーブルビューが先頭にスクロールします。

tableView = [[UITableView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 160.0f, 460.0f)];
tableView.delegate = self;
tableView.dataSource = self;
[self.view addSubview:scrollView];
[tableView release];
    
textView = [[UITextView alloc] initWithFrame:CGRectMake(160.0f, 0.0f, 160.0f, 460.0f)];
textView.scrollsToTop = NO;
[self.view addSubview:textView];
[textView release];


UIWebView は上記のクラスと違って UIScrollView を継承しているわけではないので、ちょっと面倒ですが下記のような感じになります。
もちろん、将来のバージョンで変わる可能性があります。

[[webView.subviews objectAtIndex:0] setScrollsToTop:YES];