맞춤형 지우기 버튼이 필요한 동일한 사용 사례가 나타났습니다. 나는 setText를 재정의 (override) 할 수 있기를 희망하면서 서브 클래스 UITextField를 시도해 보았습니다. 그러나 그것은 내가 원하는대로 문자가 입력되거나 삭제 될 때마다 호출되지 않기 때문에 막 다른 길로 판명되었습니다. 나는 다음과 같은 해결책을했다 :
- (void)awakeFromNib {
[super awakeFromNib];
self.clearButtonMode = UITextFieldViewModeNever;
UIButton *clearButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
[clearButton setTitle:@"x" forState:UIControlStateNormal];
[clearButton addTarget:self action:@selector(clearText:) forControlEvents:UIControlEventTouchDown];
self.rightView = clearButton;
[self addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventEditingChanged];
}
- (void)textChanged:(UITextField *)sender {
self.rightViewMode = sender.text.length > 0 ? UITextFieldViewModeWhileEditing : UITextFieldViewModeNever;
}
- (void)clearText:(UIButton *)sender {
self.text = @"";
[self textChanged:self];
}
우리가 키보드에 의해 초래 텍스트의 변화에 반응하지만 코드의 텍스트를 설정 할 수 있습니다 UIControlEventEditingChanged 사용. clearText : 메소드로 가져온 텍스트에 응답하기를 원하기 때문에 나는 clearChanged 메서드를 수동으로 호출해야합니다. 텍스트가 다른 곳의 코드에서 설정된 경우이를 보완하기 위해 textChanged를 호출해야합니다.
UITextField는 뷰 클래스입니다. NSString은 여기 모델 클래스입니다. –
물론입니다. 업데이트 됨. – jmstone617
사용자 지정 지우기 단추를 만들려면이 코드가 필요합니다. 따라서 텍스트가 없으면 단추가 사라지고 코드는 필드의 텍스트를 지울 수 있습니다. – Francesco