iOS 6にしたらボタンが効かなくなった
iOS 6だとなぜかボタンやジェスチャーが機能しなくなったってお話だよ。
「赤ちゃんの成長グラフ」ってアプリをリリースしてるんだけど、iOS 6にするとデータを入力するページのある部分のボタンが動かなくなったんだ。

↑この画面はUITableViewでテーブルを表示しているところ。このテーブルをぐぐぐーっと下へ引っ張ると、、、

↑隠れていたビューが表示されるんだ。ここにそうそう頻繁には使わないボタンを用意してるんだよ。テーブルをもう一度下に引っ張って指を離すかテーブルを上へドラッグすると元に戻って隠れるようになっている。
隠されてるviewはUITableViewオブジェクトのbackgroundViewプロパティに入れてるよ。
「赤ちゃんの成長グラフLite」って無料版もあるからどんな動作してるのか確認したい方はダウンロードしてみてね。
この隠れているボタン全部と隠れずに見えていた月の切り替えボタンがiOS 6にアップデートした後、反応しなくなったんだよ(一番上の左右にあるボタンはscrollViewと関係ないからか普通に動く)。あと、テーブルを左右にスワイプで月を切り替えられるんだけど、それも同じで反応しなくなったんだ(隠れているビューを表示している時だけ)。
こりゃiOS 6の不具合だな、そのウチ治るだろうってほったらかしにしておきたいところだけど、自分が買いたコードを見るとまあなんともひねくれた(?)書き方をしててさ。素直じゃないのかもしれない。
こりゃ対策しないとなあ、と単純なコードで確認したらいとも簡単に再現するんだよね。
こんな感じでUIScrollViewDelegateの各メソッドで処理してるんだ(loadView内でUIScrollViewオブジェクトの上にボタンを追加してるけど略)。
「赤ちゃんの成長グラフ」ってアプリをリリースしてるんだけど、iOS 6にするとデータを入力するページのある部分のボタンが動かなくなったんだ。

↑この画面はUITableViewでテーブルを表示しているところ。このテーブルをぐぐぐーっと下へ引っ張ると、、、

↑隠れていたビューが表示されるんだ。ここにそうそう頻繁には使わないボタンを用意してるんだよ。テーブルをもう一度下に引っ張って指を離すかテーブルを上へドラッグすると元に戻って隠れるようになっている。
隠されてるviewはUITableViewオブジェクトのbackgroundViewプロパティに入れてるよ。
「赤ちゃんの成長グラフLite」って無料版もあるからどんな動作してるのか確認したい方はダウンロードしてみてね。
この隠れているボタン全部と隠れずに見えていた月の切り替えボタンがiOS 6にアップデートした後、反応しなくなったんだよ(一番上の左右にあるボタンはscrollViewと関係ないからか普通に動く)。あと、テーブルを左右にスワイプで月を切り替えられるんだけど、それも同じで反応しなくなったんだ(隠れているビューを表示している時だけ)。
こりゃiOS 6の不具合だな、そのウチ治るだろうってほったらかしにしておきたいところだけど、自分が買いたコードを見るとまあなんともひねくれた(?)書き方をしててさ。素直じゃないのかもしれない。
こりゃ対策しないとなあ、と単純なコードで確認したらいとも簡単に再現するんだよね。
こんな感じでUIScrollViewDelegateの各メソッドで処理してるんだ(loadView内でUIScrollViewオブジェクトの上にボタンを追加してるけど略)。
#define HEIGHT_TABLE_TOP 44.f - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { //ドラッグ終了時に引っぱりだしていたら表示/非表示の切替 if (scrollView.contentOffset.y < -HEIGHT_TABLE_TOP) { isShow = !isShow; } } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { //戻らせないための処理 if ( (isShow)&&(scrollView.contentOffset.y > -HEIGHT_TABLE_TOP) ) { [scrollView setContentOffset:CGPointMake(0.0f, -HEIGHT_TABLE_TOP) animated:NO]; } }これは単純化したコードなので本当はもうちょっと複雑だけど引っ張りだして隠れているビューが見えるようにscrollViewを固定する、という点では同じなんだよ。まあやや強引かな。 こんな感じでscrollViewを止めていると、それに関わるイベントが伝えられないのか?これは困ったぞ。
<< AdMobが原因でビルドできない TopPage iOS 6もXcode 4.5もやって来た! >>
トラックバック
トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/660-fdec2ae8
http://ringsbell.blog117.fc2.com/tb.php/660-fdec2ae8