17

textFieldのclearButtonModeの色を変更できますか?

theTextField.clearButtonMode = UITextFieldViewModeWhileEditing

textFieldを削除するための灰色の暗い色のxを表示します。

しかし、このボタンを白い色で表示できますか?

ありがとう

4

5 に答える 5

32

この場合、独自のクリアボタン画像を作成する必要があります。クリアボタンのスクリーンショットを撮り、フォトショップで編集することをお勧めします。

その画像を取得して、画像のサイズでUIButtonを作成できます。そこから、UITextFieldのrightViewとして設定できます。そのようです:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"clear_button.png"] forState:UIControlStateNormal];
[button setFrame:CGRectMake(0.0f, 0.0f, 15.0f, 15.0f)]; // Required for iOS7
theTextField.rightView = button;
theTextField.rightViewMode = UITextFieldViewModeWhileEditing;

構文チェックなしで入力したので、実行する前にチェックアウトする必要があります。また、clear_button.pngを画像名に置き換えてください。

また、テキストフィールドをクリアするための独自のメソッドを作成する必要があります。

于 2012-04-23T02:47:39.250 に答える
8

よりクリーンな方法は、次のメソッドを使用してUITextFieldにカテゴリを実装することです。

- (void)modifyClearButtonWithImage:(UIImage *)image {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:image forState:UIControlStateNormal];
    [button setFrame:CGRectMake(0.0f, 0.0f, 15.0f, 15.0f)];
    [button addTarget:self action:@selector(clear:) forControlEvents:UIControlEventTouchUpInside];
    self.rightView = button;
    self.rightViewMode = UITextFieldViewModeWhileEditing;
}

-(IBAction)clear:(id)sender{
    self.text = @"";
}
于 2014-11-13T21:06:33.683 に答える
7

Swiftバージョン:

extension UITextField {

    func modifyClearButtonWithImage(image : UIImage) {
        let clearButton = UIButton(type: .Custom)
        clearButton.setImage(image, forState: .Normal)
        clearButton.frame = CGRectMake(0, 0, 40, 40)
        clearButton.contentMode = .ScaleAspectFit
        clearButton.addTarget(self, action: #selector(UITextField.clear(_:)), forControlEvents: .TouchUpInside)
        self.rightView = clearButton
        self.rightViewMode = .WhileEditing
    }

    func clear(sender : AnyObject) {
        self.text = ""
    }

}
于 2016-10-03T12:22:30.273 に答える
5

Swift4.1バージョン

extension UITextField {
    func modifyClearButtonWithImage(image : UIImage) {
        let clearButton = UIButton(type: .custom)
        clearButton.setImage(image, for: .normal)
        clearButton.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
        clearButton.contentMode = .scaleAspectFit
        clearButton.addTarget(self, action: #selector(UITextField.clear(sender:) ), for: .touchUpInside)
        self.rightView = clearButton
        self.rightViewMode = .whileEditing
    }

    @objc func clear(sender : AnyObject) {
        self.text = ""
        sendActions(for: .editingChanged)
    }
}
于 2018-07-11T11:40:01.290 に答える
3

textFieldを構成するときに、次を使用します。

let clearButton : UIButton = textField.value(forKey: "_clearButton") as! UIButton
let image = UIImage(named: "ClearWhite")

clearButton.setImage(image, for: .normal)
clearButton.backgroundColor = UIColor.clear
于 2016-11-15T05:36:22.917 に答える