2012-04-23 2 views
13

Можно ли изменить цвет clearButtonMode на текстовом поле?UITextField clearButtonMode color

показывает й окрашен в сером цвете темного цвета, чтобы удалить TextField,

, но я могу показать эту кнопку с белым цветом?

благодарит

ответ

30

Вам нужно создать свое собственное четкое изображение кнопки в этом случае. Я бы предложил сделать снимок экрана с помощью кнопки очистки и редактирования в Photoshop.

Вы можете взять это изображение и создать UIButton с размерами изображения. Оттуда вы можете установить его как правый элемент UITextField. Как так:

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 тем, что имя вашего изображения.

Вам также необходимо написать свой собственный метод, чтобы очистить текстовое поле.

+3

Это больше не работает под iOS 7. Вместо этого вы должны создать кнопку с фреймом. – Legoless

+7

Яблоко должно действительно обеспечить элегантный способ сделать это. – vzm

7

уборщик способ заключается в реализации категории на 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 = @""; 
} 
+0

Я думаю, вам следует использовать параметр «image» вместо созданного «clear-button» UIImage. – ingaham

5

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 = "" 
    } 

} 
+0

Не добавляйте [тот же ответ] (http://stackoverflow.com/a/39831522/5292302) к нескольким вопросам. Ответьте на лучший и обозначьте остальные как дубликаты. См. [Можно ли добавить дублирующий ответ на несколько вопросов?] (Http://meta.stackexchange.com/questions/104227/is-it-acceptable-to-add-a-duplica te-answer-to- несколько-вопросов) –

0

В то время вы настраиваете в TextField, использование:

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

clearButton.setImage(image, for: .normal) 
clearButton.backgroundColor = UIColor.clear