iPhone UITextField에 "Clear"버튼 추가


175

텍스트를 지우는 UITextField의 오른쪽에 작은 "X"버튼을 어떻게 추가합니까? iPhone OS 2.2 SDK의 Interface Builder에서이 하위 제어를 추가하기위한 속성을 찾을 수 없습니다.

참고 : Xcode 4.x 이상 (iPhone 3.0 SDK 이상)에서는 Interface Builder에서이 작업을 수행 할 수 있습니다.

답변:


329

이 버튼은 UITextField클래스에서 제공하는 내장 오버레이 이지만 iOS 2.2 SDK에서는 Interface Builder를 통해 설정할 수있는 방법이 없습니다. 프로그래밍 방식으로 활성화해야합니다.

이 코드 줄을 어딘가에 추가하십시오 ( viewDidLoad예 :) .

목표 -C

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

스위프트 5.0

myUITextField.clearButtonMode = .whileEditing

61

속성 관리자 아래의 인터페이스 빌더에서 직접 설정할 수도 있습니다.

여기에 이미지 설명을 입력하십시오

XCode 5.1에서 가져온


1
이 질문은 특히 2.2 SDK에 대해 묻고이 옵션은 이후 버전의 Interface Builder에서 사용할 수 있습니다.
— Kristopher Johnson

47

스위프트 4+ :

textField.clearButtonMode = UITextField.ViewMode.whileEditing

또는 더 짧게 :

textField.clearButtonMode = .whileEditing

열거 형 유형을 수정하십시오. 대문자로 시작해서는 안됩니다.
— T. Pasichnyk

35

다음을 사용하여 사용자 정의 지우기 버튼을 추가하고 크기와 모든 것을 제어 할 수 있습니다.

UIButton *clearButton = [UIButton buttonWithType:UIButtonTypeCustom];
[clearButton setImage:img forState:UIControlStateNormal];
[clearButton setFrame:frame];
[clearButton addTarget:self action:@selector(clearTextField:) forControlEvents:UIControlEventTouchUpInside];

textField.rightViewMode = UITextFieldViewModeAlways; //can be changed to UITextFieldViewModeNever,    UITextFieldViewModeWhileEditing,   UITextFieldViewModeUnlessEditing
[textField setRightView:clearButton];

7

목표 C :

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

빠른 :

txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;

6

스위프트 4 (크리스토퍼 존슨의 답변에서 수정)

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never

6

이 작동하지 않습니다, 나처럼 :

빠른:

customTextField.clearButtonMode = UITextField.ViewMode.Always

customTextField.clearsOnBeginEditing = true;

func textFieldShouldClear(textField: UITextField) -> Bool {
    return true
}

6

Xcode 8 (8A218a)에서 :

빠른:

textField.clearButtonMode = UITextField.ViewMode.whileEditing;

"W"는 대문자에서 대문자가 아닌 "w"로 바뀌 었습니다.


0
  func clear_btn(box_is : UITextField){
    box_is.clearButtonMode = .always
    if let clearButton = box_is.value(forKey: "_clearButton") as? UIButton {
        let templateImage =  clearButton.imageView?.image?.withRenderingMode(.alwaysTemplate)

        clearButton.setImage(templateImage, for: .normal)
        clearButton.setImage(templateImage, for: .highlighted)

        clearButton.tintColor = .white

     }
}

-4

Xcode 버전 8.1 (8B62)에서는 속성 관리자에서 직접 수행 할 수 있습니다. textField를 선택한 다음 속성 관리자에있는 지우기 버튼 드롭 다운 상자에서 적절한 옵션을 선택하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.