UITapGesture внутри Framework не работает
Я пытаюсь создать свой первый фреймворк Cocoapod, и мне нужно прикрепить простой UITapGestureRecognizer
в вид, но я не могу получить жест касания action
быть вызванным из моих рамок. У меня есть:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let foo = Foo()
foo.attachTo(view: view)
}
}
Я создал фреймворк, используя pod lib create Foo
внутри
public class Foo {
public init() {}
public func attachTo(view: UIView) {
let endpointGesture = UITapGestureRecognizer(target: self, action: #selector(selected(_:)))
view.backgroundColor = UIColor.blue
view.isUserInteractionEnabled = true
view.addGestureRecognizer(endpointGesture)
}
@objc private func selected(_ sender: UITapGestureRecognizer) {
print("Gesture Recognized")
}
}
Я могу сказать, что представление правильно передается в фреймворк, потому что при создании приложения у меня синий экран.
Перемещение распознавателя жестов и selected
функция в ViewController
работает как положено. Нажатие на просмотр отпечатков Gesture Recognized
в консоль, так что с фреймворком что-то происходит, я не понимаю.
Я уже пытался добавить -ObjC
флаг компоновщика для фреймворка, но это, похоже, ничего не сделало. Я что-то пропустил?
1 ответ
Проблема в том, что ваш foo
переменная не сохраняется. Если вы сделаете foo
переменная как переменная экземпляра, она должна работать.
class ViewController: UIViewController {
let foo = Foo() // this is now retained by the view controller
override func viewDidLoad() {
super.viewDidLoad()
foo.attachTo(view: view)
}
}