RxSwift:如何向UILabel添加手势?
问题描述:
我有一个label
与isUserInteractionEnabled
设置为true
。现在,我需要为标签添加UITapGestureRecognizer
。有没有办法以Rx
的方式添加。RxSwift:如何向UILabel添加手势?
我已经看过了RxSwift库here。他们没有提供任何扩展来添加手势。 UILabel+Rx
文件只有text
和attributedText
。
有任何解决方法来添加手势标签?
答
UILabel没有配置开箱即用的手势识别器,这就是为什么RxCocoa没有提供直接在标签上聆听手势的方法。你将不得不自己添加手势识别器。然后你可以使用的Rx从识别器观察到的事件,就像这样:
let disposeBag = DisposeBag()
let label = UILabel()
label.text = "Hello World!"
let tapGesture = UITapGestureRecognizer()
label.addGestureRecognizer(tapGesture)
tapGesture.rx.event.bind(onNext: { recognizer in
print("touches: \(recognizer.numberOfTouches)") //or whatever you like
}).disposed(by: disposeBag)
答
这些扩展在技术上是当前用RxSwift打包RxCocoa libary的一部分。
你应该能够在UITapGestureRecognizer添加到视图,然后只需用rx.event(rx_event如果以上)手势对象。
如果您必须在UILabel的上下文中执行此操作,那么您可能还需要将其包装在UILabel + Rx中,但是如果您有更简单的要求,则只需在手势上使用rx.event即可解决方法。
对于我来说,它抛出'“的UILabel”不是“UIGestureRecognizer''错误的亚型。我正在使用'IBOutlet' – Rugmangathan
我在答案中犯了一个错误。您需要在识别器上使用'rx.event'而不是标签。我刚刚更新了答案。 – RvdB