私はしばらく使用してきた UIPopoverController を持っています。現在、iOS 7 用にコードを更新していますが、ポップオーバーのサイズを変更すると、ポップオーバーが突然画面上を移動し、ユーザー エクスペリエンスが非常に悪くなります。
縦向きのときは起こりません。タップしてポップオーバーを開き、ボタンをタップするとポップオーバーが展開され、すべて問題ありません。ただし、横向きに切り替えて同じことを行うと、ボタンをタップしてポップオーバーを展開すると、別の場所にスライドします。
これが私が話していることを示すビデオです: https://vimeo.com/75632364
これは、ユーザーがポップオーバーのサイズ変更を引き起こすボタンをタップしたときに実行されるコードです。
- (IBAction) touchedButtonPayDownLoan:(id)sender {
UIView *payOffView = nil;
if ([self.liability isBankLoan]) {
payOffView = self.viewPayoffBank;
} else {
payOffView = self.viewPayoffOther;
}
CGRect loanFrame = payOffView.frame;
loanFrame.origin.y = self.toolbar.frame.origin.y;
payOffView.frame = loanFrame;
[self.view addSubview:payOffView];
[self.view bringSubviewToFront:self.toolbar];
[UIView beginAnimations:@"Show Payoff View" context:nil];
NSMutableArray *items = [[self.toolbar items] mutableCopy];
[items removeLastObject];
[items addObject:self.barButtonFinish];
self.toolbar.items = items;
// -------- RELEVANT BITS HERE ---------
CGRect frame = self.view.frame;
frame.size.height += payOffView.frame.size.height;
self.view.frame = frame;
self.preferredContentSize = frame.size;
// -------- RELEVANT BITS HERE ---------
[UIView commitAnimations];
}
ポップオーバーが位置をジャンプすることは望ましくありません。ユーザーを悩ませるからです。何か案は?