Почему мой UIMenuController не отображается в моем представлении?
Я не могу понять, почему мой UIMenuController не отображается в моем представлении. Когда я долго жму кнопку, я вижу, что все инструкции выполнены, но меню не отображается.
public class MySingleArticleView : UIView
{
private MyArticleViewController _controller; // MyArticleViewController extends BaseViewController
public MySingleArticleView (MyArticleViewController controller, ...)
{
_controller = controller;
// ... init code
}
void ArticleLongPressed (UILongPressGestureRecognizer gestureRecognizer)
{
var menuController = UIMenuController.SharedMenuController;
var copyMenuItem = new UIMenuItem ("copy", new Selector ("CopyRow"));
var pasteMenuItem = new UIMenuItem ("paste", new Selector ("PasteRow"));
var location = gestureRecognizer.LocationInView (_controller.View);
_controller.BecomeFirstResponder ();
menuController.MenuItems = new [] { copyMenuItem, pasteMenuItem };
menuController.SetTargetRect (new CGRect (location.X, location.Y, 0, 0), _controller.View);
menuController.SetMenuVisible (true, true);
}
[Export("CopyRow")]
void Row (UIMenuController controller)
{
// do something
}
[Export("PasteRow")]
void PasteRow (UIMenuController controller)
{
// do something
}
}
Что я забыл?
1 ответ
Может быть потому, что вы задаете значение высоты и ширины, равное 0, когда вы устанавливаете целевой прямоугольник:
menuController.SetTargetRect (new CGRect (location.X, location.Y, 0, 0), _controller.View);
Попробуйте задать ему высоту и ширину и посмотрите, появится ли он:
menuController.SetTargetRect (new CGRect (location.X, location.Y, 100, 100), _controller.View);
Я нашел ответ сам, и, возможно, у кого-то может быть такая же проблема.
Мне нужно было поставить двоеточие ':' после имени экспортируемой функции, поэтому:
[Export("PasteRow:")]
void PasteRow (UIMenuController controller)
{
}
[Export("CopyRow:")]
void CopyRow (UIMenuController controller)
{
}
Точно так же при установке:
var copyMenuItem = new UIMenuItem ("copy", new Selector ("CopyRow:"));
var pasteMenuItem = new UIMenuItem ("paste", new Selector ("PasteRow:"));