我通过拖拽生成了一个文本框和一个按钮,我希望实现的功能是
“文本框输入为空时,按钮禁用,文本框输入不空时,按钮可用”
我使用的方式是用一个动作绑定与文本框编辑有关的事件,其中inputField代表文本框,primeFactorizationButton代表按钮
@IBAction func changeButton(_ sender: AnyObject) {
if(inputField.text == ""){
primeFactorizationButton.isUserInteractionEnabled=false
}
else{
primeFactorizationButton.isUserInteractionEnabled=true
}
}
但是这种方法仍然不好用,好像实际上的需要是实时监听文本框的值,inputField.text,实时调整 button 的可用状态,请问我应该怎么修改代码呢?
방법 1: inputField.delegate를 설정합니다.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
의 최종 텍스트를 계산하고 text.length를 기준으로 버튼 비활성화 여부를 결정합니다.방법 2: 알림을 수신할 때
으아악UITextFieldTextDidChangeNotification
,NSNotificationCenter.defaultCenter.addObserver
object
가 inputField를 전달한 다음 처리 방법에서 다음을 결정합니다.최근에 우연히 이 기능을 구현하게 되었는데, 꽤 쉽습니다. 먼저 UITextFIeld의 프록시 계약을 준수하고 다음 방법을 구현하세요.
으아악그런 다음 알림을 만들고 알림 수신 방법을 판단합니다.
으아악 으아악그러나 알림을 제거하는 것을 잊지 마세요:
으아악RAC를 사용하는 또 다른 방법인 리액티브 프로그래밍이 더 편리하지만, 당분간은 어떻게 해야할지 모르겠으니 시도해 볼 수도 있습니다
우아함을 더하다
으아악으아악