タッチイベントを取得してラベルタップ時にメニューを表示しているのですが、
メニューを追加しているカスタムラベルクラス内で、タップしたラベルの名称と値を取得する方法は
あるのでしょうか?
取得した値は、canPerformAction内で表示メニュー選択の条件分けに使用したい。
swift
1// ラベルタップ時にメニューを表示する 2 override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 3 super.touchesEnded(touches, with: event) 4 for touch: UITouch in touches { 5 let tag = touch.view!.tag 6 let sender = touch.view! 7 8 switch tag { 9 case 1: 10 //カスタムクラス内で値が取得できないのでここでグローバル変数に値を代入しています 11 checkLabelValue = A.text! 12 let label = sender as! Custom_ALabel 13 label.showMenu(sender) 14 case 2: 15 checkLabelValue = B.text! 16 let label = sender as! Custom_BLabel 17 label.showMenu(sender) 18 default: 19 break 20 } 21 } 22 } 23
swift
1import UIKit 2 3// MARK: カスタムラベルの定義 4class Custom_ALabel: UILabel { 5 6 override var canBecomeFirstResponder: Bool { 7 return true 8 } 9 10 func showMenu (_ sender: Any?) { 11 self.becomeFirstResponder() 12 13 // MenuControllerを生成 14 let menuController: UIMenuController = UIMenuController.shared 15 if !menuController.isMenuVisible { 16 menuController.arrowDirection = UIMenuControllerArrowDirection.up 17 // MenuItmを生成する 18 let menuItem1: UIMenuItem = UIMenuItem(title: "Copy", action: #selector(Custom_ALabel.copy)) 19 let menuItem2: UIMenuItem = UIMenuItem(title: "Paste", action: #selector(Custom_ALabel.paste)) 20 21 // MenuItemを配列に格納する 22 let menuItems: NSArray = [menuItem1, menuItem2] 23 menuController.menuItems = menuItems as? [UIMenuItem] 24 menuController.setTargetRect(self.bounds, in: self) 25 menuController.setMenuVisible(true, animated: true) 26 } 27 } 28 29 // 表示メニューを選択する 30 override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { 31 32 // 条件わけに使いたいのですが、ここでラベルの名称と値を取得するにはどう書いたらいいでしょうか? 33 34 if checkLabelValue == "" { 35 return false 36 } else { 37 if action == #selector(Copy) || action == #selector(Paste){ return true } 38 } 39 return false 40 } 41 42 @objc func copy (sender: AnyObject) { 43 print("Copy") 44 45 } 46 @objc func paste (sender: AnyObject) { 47 print("Paste") 48 49 50}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/22 10:45
2018/01/22 10:55
退会済みユーザー
2018/01/22 11:04
2018/01/23 00:27