Я хочу получить UIMenuController
, когда изображение в ячейке коснулось.Чтобы быть понятным, это не когда постукивают по ячейке, а когда это касается изображения внутри ячейки.Жест касания к изображению срабатывает должным образом и запускает функцию, но меню никогда не отображается.
Пользовательская ячейка:
class VideoHomeCell: UITableViewCell {
var thumbImage:UIImage! {
didSet {
createCell()
}
}
private lazy var thumbImageView:UIImageView = {
let view = UIImageView(image: self.thumbImage)
view.contentMode = .scaleAspectFill
view.clipsToBounds = true
view.isUserInteractionEnabled = true
view.translatesAutoresizingMaskIntoConstraints = false
let gesture = UITapGestureRecognizer(target: self, action: #selector(imageTapped))
view.addGestureRecognizer(gesture)
return view
}()
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func createCell() {
self.addSubview(thumbImageView)
thumbImageView.heightAnchor.constraint(equalToConstant: 100).isActive = true
thumbImageView.widthAnchor.constraint(equalToConstant: 100).isActive = true
thumbImageView.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true
thumbImageView.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
}
@objc func imageTapped(recognizer: UIGestureRecognizer) {
let menuController = UIMenuController.shared
let trimItem = UIMenuItem(title: "Trim", action: #selector(menuSelected))
menuController.menuItems = [trimItem]
menuController.setTargetRect(self.thumbImageView.frame, in: self.superview!)
menuController.setMenuVisible(true, animated: true)
}
@objc func menuSelected() {
print("Menu Selection!")
}
}
TableView:
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.videoModelArray.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! VideoHomeCell
cell.thumbImage = self.videoModelArray[indexPath.row].originalThumbnail
return cell
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100.0
}
Я пробовал разные значения в setTargetRect
, чтобы включить представление жеста и self.frame.Я также попробовал рендеринг в себе.Кроме того, я вручную установил CGRect
.Ничто из того, что я делаю, не позволяет отображать меню.