カスタム アクションを UIMenuController に追加しました。アクションがクリックされると、「定義」アクションの動作と同じようにポップオーバーが表示されるようにします (下のスクリーンショットを参照)。
ただし、UIWebView 内でポップオーバーを正しく配置することができません。ユーザーがカスタム アクションを選択したときにポップオーバーを生成するコードの抜粋を次に示します。
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
popover = [[UIPopoverController alloc]
initWithContentViewController:contentController];
[popover setDelegate:self];
popover.popoverContentSize = CGSizeMake(240., 60.);
UIMenuController *menuController = [UIMenuController sharedMenuController];
[popover presentPopoverFromRect:menuController.menuFrame
inView:webView
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
デバイスが縦向きモードの場合の結果は次のとおりです。
ご覧のとおり、それほど悪くはありませんが、選択したテキストに正確に合わせることができません。ランドスケープモードでは、ポップオーバーの位置は近くさえありません。
選択したテキストにポップオーバーを正しく配置し、ユーザーがデバイスを回転させたときにポップオーバーを正しく配置する方法を知っている人はいますか? SDK のバージョンは iOS 6.1 です。