Я пытаюсь создать isHighlighted Observable для моего UIButton, чтобы отправлять последовательность каждый раз, когда isHiglighted для UIButton изменился. И я написал что-то вроде этого
extension Reactive where Base: UIButton {
var isHighlighted: Observable<Bool> {
let property = self.base.rx.controlProperty(editingEvents: .allTouchEvents,
getter: { _ in self.base.isHighlighted },
setter: { (_, _) in })
return property
.distinctUntilChanged()
.asObservable()
}
}
Проблема в том, что это не работает для .touchUpInside
. Если я проведу пальцем за пределы UIButton, а затем вернусь, он будет работать нормально, но не для действия касания. Я думаю, что сразу после .touchUpInside
он все еще выделяется на очень короткое время.
highlighted
- Например, когда пользователь нажимает кнопку с заголовком, кнопка переходит в выделенное состояние. - но не то, что устанавливает его на ...default
? Но имеет смысл (по крайней мере, для меня), что пока что-то еще не получит фокус (если использовать термин MSFT), операционная система может быть спроектирована так, чтобы удерживать фокус на кнопке. Таким образом, задержка при удалении выделенного состояния. - person dfd   schedule 03.02.2018UIButton
и переопределитьisHightlighted
, делая то, что вам нужно, вdidSet
. Я просто попробовал это, и он построен без ошибок. - person dfd   schedule 03.02.2018