5

プログラムでイベントを実行するために、ユーザーがステータスバーをクリックしたことを検出するために、アプリにダミーの ScrollView を追加しています。ViewDidLoad で作成しています。

//Dummy Scroll is for the tap on status bar to work 

UIScrollView *dummyScrollView = [[UIScrollView alloc] init]; 
dummyScrollView.delegate = self; 
[[self view ] addSubview:dummyScrollView]; 
[[self view] sendSubviewToBack:dummyScrollView];  

次に実装します:

 - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView 
 { 

NSLog(@"scrollViewShouldScrollToTop");
 .
 .
 }

IOS の以前のすべてのバージョンでは、これは美しく完璧に機能していましたが、iOS 6 では scrollViewShouldScrollToTop が呼び出されることはありません。これはバグですか?? API によると、これは iOS6 のデリゲートの一部として引き続き利用できるはずですが、デバイスとシミュレーターの両方で iOS6 の下では実行されません...何が起こっているのか誰にもわかりますか?

まだ他のTableViewまたはScrollViewはありませんが、MAPVIEWはありますか?? しかし、MapView には、NO に設定できるはずの shouldScrollToTop がありません。そのため、なぜこれが iOS 6 で機能しなくなったのか、まだ混乱しています...

4

2 に答える 2

5

作成している UIScrollView が、ビュー階層内の唯一の UIScrollView ではない可能性はありますか? ビュー階層に複数の UIScrollView がある場合、iOS6 のように見えますscrollsToTop = YES。これは、その scrollViewShouldScrollToTop メソッドが呼び出されるものです。

私の問題は、ステータスバーがタップされたときに上部に自動スクロールされなくなった非常に基本的な UITableViewがあるという点で似ていました。最後に、tableView のセルの 1 つが UIWebView を使用していることを思い出しました。このセルは、webView.scrollViewiOS6 より前に tableView で行われていた scrollViewShouldScrollToTop への呼び出しを (正しく、現在 iOS6 で) ハイジャックしていました。

tableViewCell の「scrollsToTop = NO」を設定した後、ステータス バーの自動スクロールが以前と同じように機能するようになりました。コードの概観は次のとおりです。

myCustomCellWithAWebView.webView.scrollView.scrollsToTop = NO;

お役に立てれば!

于 2012-10-03T19:58:50.777 に答える
0

iOS 6 では、ステータスバーの scrollview の上の部分をタップするだけで scrollsToTop イベントが発生します。

また、その scrollView を非表示にすることも、アルファを 0 にすることもできません。

しかし、それはカバーすることができます。または背景色をクリアします。

したがって、iOS 6 では、

dummyScrollView.frame = self.view.bounds;
dummyScrollView.backgroundColor = [UIColor clearColor];  
于 2012-11-16T09:25:44.583 に答える