答案 0 :(得分:3)
<强>更新强>
从您的问题来看,您似乎希望在键盘扩展程序的文本输入上显示菜单,而不是在应用程序中。没有API可以执行此操作,因为您仅限于UIInputViewController
和UITextDocumentProxy
中可用的方法,无法访问应用程序的文本字段或菜单控制器。您必须在自己的应用中提供说明,或者考虑创建iMessage扩展程序(如果它是您的目标应用程序)。
如果您想在自己的应用中执行此操作
这有三个部分。
首先,要从文本视图中显示菜单,它必须是第一个响应者:
textView.becomeFirstResponder()
其次,你需要知道选择的矩形。如果没有插入符号或选择,我放弃了。我们不应该讨论这种情况,因为文本视图是第一个响应者。
guard let selectedRange = textView.selectedTextRange else { return }
let selectionLength = textView.offset(from: selectedRange.start to: selectedRange.end)
let targetRect : CGRect
if selectionLength > 0 {
targetRect = textView.firstRect(for: selectedRange)
} else {
targetRect = textView.caretRect(for: selectedRange.start)
}
最后,我们可以使用共享菜单控制器显示菜单控制器:
UIMenuController.shared.setTargetRect(textView.bounds, in: textView)
UIMenuController.shared.setMenuVisible(true, animated: true)
答案 1 :(得分:2)
文档中有代码可以执行此操作:
-std=c99
或在Swift中,定位textField.frame:
UIMenuController *theMenu = [UIMenuController sharedMenuController];
CGRect selectionRect = CGRectMake (currentSelection.x, currentSelection.y, SIDE, SIDE);
[theMenu setTargetRect:selectionRect inView:self];
[theMenu setMenuVisible:YES animated:YES];