独自の CustomUIActionSheet を実装しようとしています。
ほとんど機能していますが、showInView メソッドがどのように機能するのかわかりません。
- (void)showInView:(UIView *)ビュー
ビューを指定すると、このメソッドはそのビューをすべての単一ビューの前に配置することができます (おそらくウィンドウに追加しますか?) が、追加されているビューに応じて回転を設定することもできます。
パラメータとして受け取ったビューのウィンドウに追加してみました。
CGFloat startPosition = view.window.bounds.origin.y + view.window.bounds.size.height;
self.frame = CGRectMake(0, startPosition, view.window.bounds.size.width, [self calculateSheetHeight]);
[view.window addSubview:self];
self.blackOutView = [self buildBlackOutViewWithFrame:view.window.bounds];
[view.window insertSubview:self.blackOutView belowSubview:self];
これを行うことにより、アクションシートを横向きに表示すると、アクションシートが右から表示されることを除いて、すべてが機能します(Windowsシステムは常に同じを参照するため)
また、次のようにビュー ウィンドウの rootViewController に追加しようとしました。
UIView * view = view.window.rootViewController.view;
CGFloat startPosition = view.bounds.origin.y + view.bounds.size.height;
self.frame = CGRectMake(0, startPosition, view.bounds.size.width, [self calculateSheetHeight]);
[view addSubview:self];
self.blackOutView = [self buildBlackOutViewWithFrame:view.bounds];
[view insertSubview:self.blackOutView belowSubview:self];
しかし、繰り返しますが、ランドスケープでは失敗します。何も追加されないか、少なくとも表示されません
それで、私の質問は、両方の方向で機能する階層の最上位にビューを追加する方法の手がかりはありますか?
どうもありがとう!