Как удалить UIMenuItem по умолчанию из UIMenuController в iOS?

#iphone #ios #ipad

#iPhone #iOS #iPad

Вопрос:

Я хочу удалить некоторые объекты UIMenuItem по умолчанию, такие как «Вырезать», «Копировать» и т.д., Из UIMenuController.

Как это сделать?

Спасибо.

Ответ №1:

Создайте подкласс представления, в котором представлено меню (например, UIWebView , UITextView ), и переопределите его, -canPerformAction:withSender: чтобы вернуть NO элементы меню, которые вы не хотите отображать.

 - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    if (action == @selector(copy:)) {
        return NO;
    }
    else {
        return [super canPerformAction:action withSender:sender];
    }
}
  

Комментарии:

1. Как вы избавились от опции вставки? Я попробовал то же самое с пастой, но она появляется. Я думаю, это потому, что на доске для вставки уже есть некоторый контент..

Ответ №2:

 class TextView: UITextView {
    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        if action == #selector(copy(_:)){
            return true
        }
        else{
            return false
        }
    }
}
  

В Swift 4 ,

0

Как сказал Питер Стюарт: подклассируйте представление, в котором представлено меню (например. UITextView)

затем override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool

верните false для пунктов меню, которые вы не хотите отображать.