iPhoneのポップオーバービューを使いたいです。サードパーティのライブラリを見つけましたが、そのメソッドの一部がプライベート メソッドを利用していると著者は言っています (アプリ ストアに送信するときに問題が発生し
ます)。
あなたはそれらを見つけることができますか?
[barButtonItem performSelector:@selector(view)] はプライベート メソッドを呼び出していると見なされますか?
https://github.com/sonsongithub/PopupView/blob/master/SNPopupView%2BUsingPrivateMethod.m
- (void)showFromBarButtonItem:(UIBarButtonItem*)barButtonItem inView:(UIView*)inView animated:(BOOL)animated {
if(![barButtonItem respondsToSelector:@selector(view)]) {
// error
return;
}
UIView *targetView = (UIView *)[barButtonItem performSelector:@selector(view)];
UIView *targetSuperview = [targetView superview];
BOOL isOnNavigationBar = YES;
if ([targetSuperview isKindOfClass:[UINavigationBar class]]) {
isOnNavigationBar = YES;
}
else if ([targetSuperview isKindOfClass:[UIToolbar class]]) {
isOnNavigationBar = NO;
}
else {
// error
return;
}
CGRect rect = [targetSuperview convertRect:targetView.frame toView:inView];
CGPoint p;
p.x = rect.origin.x + (int)rect.size.width/2;
if (isOnNavigationBar)
p.y = rect.origin.y + rect.size.height + BAR_BUTTON_ITEM_UPPER_MARGIN;
else
p.y = rect.origin.y - BAR_BUTTON_ITEM_BOTTOM_MARGIN;
[self showAtPoint:p inView:inView animated:animated];
}