1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
import UIKit class ViewController: UIViewController ,UIGestureRecognizerDelegate { override func viewDidLoad() { super.viewDidLoad() // tap let tapGesture:UITapGestureRecognizer = UITapGestureRecognizer( target: self, action: #selector(ViewController.tapped(_:))) self.view.addGestureRecognizer(tapGesture) // Long Press let longtPressGesture:UILongPressGestureRecognizer = UILongPressGestureRecognizer( target: self, action: #selector(ViewController.longPress(_:))) self.view.addGestureRecognizer(longtPressGesture) } @IBOutlet weak var textView: UITextView! // tap @objc func tapped(_ sender: UITapGestureRecognizer){ textView.text.append(contentsOf: "tapped\n") } // Long Press @objc func longPress(_ sender: UILongPressGestureRecognizer){ if sender.state == .began { textView.text.append(contentsOf: "LongPress start\n") } else if sender.state == .ended { textView.text.append(contentsOf: "LongPress end\n") } } override func viewDidDisappear(_ animated: Bool) { // ViewController を繰り返し使用する場合 NotificationCenter.default.removeObserver(self) } } |
viewDidLoadで通知設定を行い、ViewController を繰り返し使用する場合、通知が複数回登録されてしまう。
この場合、
override func viewDidDisappear(_ animated: Bool) で、次のように通知を削除する。
NotificationCenter.default.removeObserver(self)