テキストをクリアするUITextFieldの右側にある小さな「X」ボタンをどのように追加しますか? iPhone OS 2.2 SDKのInterface Builderにこのサブコントロールを追加するための属性が見つかりません。
注: Xcode 4.x以降(iPhone 3.0 SDK以降)では、Interface Builderでこれを実行できます。
このボタンは、UITextFieldクラスによって提供される組み込みオーバーレイですが、iPhone OS 2.2 SDKの時点では、Interface Builderを介して設定する方法はありません。プログラムで有効にする必要があります。
次のコード行をどこかに追加します(たとえば、viewDidLoad):
Objective-C
myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;
Swift 5.
myUITextField.clearButtonMode = UITextField.ViewMode.whileEditing
PDATE: Xcode IBの最新バージョンはこのプロパティをサポートします。
これは、Interfaces BuilderのAttributes Inspectorから直接設定することもできます。
XCode 5.1から取得
Swift 4+:
textField.clearButtonMode = UITextField.ViewMode.whileEditing
またはさらに短い:
textField.clearButtonMode = .whileEditing
カスタムクリアボタンを追加し、これを使用してサイズとすべてのものを制御できます。
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];
目標C:
self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;
スイフト:
txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;
これは動作しません、私のように:
迅速:
customTextField.clearButtonMode = UITextField.ViewMode.Always
customTextField.clearsOnBeginEditing = true;
func textFieldShouldClear(textField: UITextField) -> Bool {
return true
}
Swift 4(クリストファー・ジョンソンの答えから適応)
textfield.clearButtonMode = .always
textfield.clearButtonMode = .whileEditing
textfield.clearButtonMode = .unlessEditing
textfield.clearButtonMode = .never
Xcode 8(8A218a)の場合:
迅速:
textField.clearButtonMode = UITextField.ViewMode.whileEditing;
「W」は大文字から大文字でない「w」になりました。
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
}
}