更新 2
私の疑いは正しかった。問題はアニメーションにありました。これは、インコール ステータス バーが表示されているときに異なる Y 軸の原点を考慮していなかったためです。関連するコードも示す回答を追加します。
更新 1
メニューのアニメーションが問題を引き起こしていると思いました。メニューを押すと、アニメーションが開始されてメニューが表示されます。アニメーションは、提示された VC を右にスライドさせ、少しだけ縮小し、z 軸で回転させて滑らかにクールに見せます。その方向で調査し、何か見つけたら更新します。
元の投稿
アプリで通話中ステータス バーを表示しているときに、いくつかの UI の問題に気付きました。
ナビゲーション バーとして機能し、メニューに戻るための小さなボタンを含むカスタム ビューがあります。(私はそれを呼びます menuBtn
)。tableViewHeader
このカスタム ナビゲーション バーの下に、テーブル内の日の間を移動するための 2 つのボタンを含むテーブル ビューがあります。(これらのボタンを :prevBten
と と呼びますnextBtn
)。これらの 3 つのビューを例として使用しますが、問題はいたるところで発生します...
通常、すべてが完璧に機能し、期待どおりに機能します。通話中のステータス バーが表示されるようになっても、サイズ変更は完璧に機能し、生活は快適です。クリックすると問題が発生menuBtn
し、現在のビューがスライドしてメインメニューが表示されます(そうすることで、 を切り替えますStoryboards
)。ここで、元の画面に戻ると、すべてのビューは (サイズ的には) 問題ないように見えますが、タップ領域がボタンの画像と一致していません。あるべき場所にボタンが表示されますが、タップしても何も起こりません。奇妙な点は、ボタンの下をタップすると、それらのボタンへのアクション バインドがトリガーされることです。
さらに奇妙なことに、問題が発生すると、特定のボタン (つまりmenuBtn
)のタップ領域が別のボタン ( )と重なることがありますprevBtn
。
原因/解決策をしばらく探していました。私は運が悪いと次の記事を読みました:
Storyboards
インターフェイスビルダーで自動サイズ変更を設定しようとしてもうまくいきませんでしたが、切り替えているという事実と関係があるという予感がしました。
助けたい人に役立つかもしれないいくつかのコード
menuBtn
が押されたときにトリガーされるメソッド:
- (void)replaceChildStoryboard:(NSString *)storyboardName
{
//remove previos child's view and itself from parent
[currNav removeFromParentViewController];
[currNav.view removeFromSuperview];
//instantiate new storyboard
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
UINavigationController *vc = [storyboard instantiateInitialViewController];
//update curr pointer to new child and add it to parent
currNav = vc;
[self addChildViewController:currNav];
[self.view addSubview:currNav.view];
[currNav didMoveToParentViewController:self];
//animate transition
[self slideNavAnimated:NO];
[self navPressed];
}
いくつかのスクリーンショット
prevBtn
3 番目のスクリーンショットでは、 ( の下にあるmenuBtn
)をタップすると、menuBtn
代わりにアクションがアクティブになります。prevBtn
(私が描いた円で示されているように-赤い円の内側をmenuBtn
タップするとprevBtn
、
誰かが問題の根本に到達して修正するのを手伝ってくれることを願っています.
前もって感謝します。