Ios 为什么反应迅速的动作只运行一次?

Ios 为什么反应迅速的动作只运行一次?,ios,swift,reactive-cocoa,reactive-swift,Ios,Swift,Reactive Cocoa,Reactive Swift,我想使用ReactiveSwift实现一个简单的登录特性 以下是我的ViewController代码: func setupRac() { viewmodel = SignInViewModel() self.viewmodel.username <~ self.usernameTextField.reactive.continuousTextValues self.viewmodel.password <~ self.passwordTextField.r

我想使用ReactiveSwift实现一个简单的登录特性

以下是我的ViewController代码:

func setupRac() {
    viewmodel = SignInViewModel()

    self.viewmodel.username <~ self.usernameTextField.reactive.continuousTextValues
    self.viewmodel.password <~ self.passwordTextField.reactive.continuousTextValues

    self.loginButton.reactive.pressed = CocoaAction(viewmodel.submit) { sender in
        return (self.usernameTextField.text, self.passwordTextField.text)
    }
func setupRac(){
viewmodel=SignInViewModel()
self.viewmodel.username 0
}
self.valid=Property.CombineTest(self.usernameValid,self.passwordValid).map({(usernameValid,passwordValid)在
返回usernameValid&&passwordValid
})
self.submit=Action(enabledIf:self.valid,{用户名,密码
返回MembershipManager.sharedInstance.signin(用户名:用户名!密码:密码!)
})
}
当我将断点放在行
return MembershipManager.sharedInstance.sign(…
)上时,当我只按下登录按钮时,它只被点击了一次。之后,当我再次按下按钮时,什么也没有发生


有人知道原因吗?我只是从ReactiveSwift开始的。

当一个操作正在执行时,你不能开始一个新的操作。你确定在你再次按下按钮之前,
MembershipManager.sharedInstance.signin()
已经完成了吗?我不确定“完成”是什么意思我在Alamofire上面有一个包装器类,它返回一个SignalProduct(另一个人写了这段代码,但我无法联系他)。无论如何,我确信请求已执行并完成。此代码是否可用于查看?抱歉,我这里没有源代码。今晚我将更新我的问题。谢谢。您可以使用操作员查看在
MembershipManager.sharedInstance.signin上发送的事件,以检查是否有
。已完成
登录后的事件。当一个操作正在执行时,您不能启动一个新的操作。您确定在再次按下按钮之前,
MembershipManager.sharedInstance.signin()
已完成吗?我不确定Reactive中的“complete”概念。我在Alamofire上方有一个包装器类,它返回一个SignalProduct(另一个人写了这段代码,但我无法联系他)。无论如何,我确信请求已执行并完成。此代码是否可用于查看?抱歉,我这里没有源代码。今晚我将更新我的问题。谢谢。您可以使用操作员查看在
MembershipManager.sharedInstance.signin上发送的事件,以检查是否有
。已完成
登录后的事件。
class SignInViewModel {
let username = MutableProperty<String?>(nil)
let password = MutableProperty<String?>(nil)

let usernameValid: Property<Bool>
let passwordValid: Property<Bool>
let valid: Property<Bool>
let submit: Action<(String?, String?), String, NetworkError>

init() {
    self.usernameValid = username.map {
        return ($0 ?? "").characters.count > 0
    }

    self.passwordValid = password.map {
        return ($0 ?? "").characters.count > 0
    }

    self.valid = Property.combineLatest(self.usernameValid, self.passwordValid).map({ (usernameValid, passwordValid) in
        return usernameValid && passwordValid
    })

    self.submit = Action(enabledIf: self.valid, { username, password in
        return MembershipManager.sharedInstance.signin(username: username!, password: password!)
    })
}