我有一個label
與isUserInteractionEnabled
設置爲true
。現在,我需要爲標籤添加UITapGestureRecognizer
。有沒有辦法以Rx
的方式添加。RxSwift:如何向UILabel添加手勢?
我已經看過了RxSwift庫here。他們沒有提供任何擴展來添加手勢。 UILabel+Rx
文件只有text
和attributedText
。
有任何解決方法來添加手勢標籤?
我有一個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