UIContextMenuActionProvider помещает ненужные значки галочек на элементы - PullRequest
0 голосов
/ 06 февраля 2020

Проблема

Я реализовал UIContextMenuInteraction, и в результате получил поведение, которое я не могу объяснить или найти исправления тоже. Проблема, как видно из снимка экрана, что пункты меню имеют галочки. Это не предназначено, и эти галочки добавляются автоматически. В идеале я хотел бы использовать SF Symbols, но любое добавленное мной изображение заканчивается этой галочкой. Даже если я установлю для изображения значение nil, он все равно добавляет эту странную галочку.

Дополнительные шаги : переустановка символов SF и SF Pro, чистая сборка, перезапуск xCode / Simulator

Воспроизведено: Симулятор iOS 13,3, iPhone 7 iOS 13,3

Система: Catalina 10.15.1, xCode 11.3.1

код:

import UIKit

class ViewController: UIViewController {

  let sampleView = UIView(frame: CGRect(x: 50, y: 300, width: 300, height: 200))

  override func viewDidLoad() {
    super.viewDidLoad()

    view.addSubview(sampleView)
    sampleView.backgroundColor = .systemIndigo


    let interaction = UIContextMenuInteraction(delegate: self)
    sampleView.addInteraction(interaction)
  }
}

extension ViewController: UIContextMenuInteractionDelegate {

  func contextMenuInteraction(
    _ interaction: UIContextMenuInteraction,
    configurationForMenuAtLocation location: CGPoint
  ) -> UIContextMenuConfiguration? {

    let actionProvider: UIContextMenuActionProvider = { [weak self] _ in

      let like = UIAction(
        title: "Like",
        image: UIImage(systemName: "heart"),
        identifier: nil,
        discoverabilityTitle: nil,
        attributes: [],
        state: .on
      ) { _ in

      }

      let copy = UIAction(
        title: "Copy",
        image: nil,
        identifier: nil,
        discoverabilityTitle: nil,
        attributes: [],
        state: .on
      ) { _ in

      }

      let delete = UIAction(
        title: "Delete",
        image: UIImage(systemName: "trash"),
        identifier: nil,
        discoverabilityTitle: nil,
        attributes: [.destructive],
        state: .on
      ) { _ in

      }

      return UIMenu(
        title: "",
        image: nil,
        identifier: nil,
        options: [],
        children: [
          like, copy, delete
        ]
      )
    }


    let config = UIContextMenuConfiguration(identifier: nil, previewProvider: nil, actionProvider: actionProvider)

    return config

  }

}

Weird checkmarks

1 Ответ

1 голос
/ 06 февраля 2020

Вам нужно изменить UIAction.state с .on на .off, чтобы избавиться от галочки.

...