2013-09-08 4 views
2

то, что я пытаюсь сделать, это сделать пользовательскую кнопку очистки в UITextField, в настоящее время у меня есть все, кроме последней части. Что заставляет его претворять четкие действия. Тем не менее, я не был в состоянии работать, как я могу получить его, чтобы очистить, только TextField он находится.Использование UIButton внутри UITextField как кнопка очистки

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    [textField setTextColor:[UIColor colorWithRed:0.56f green:0.56f blue:0.56f alpha:1.00f]]; 
    [textField setFont:[UIFont systemFontOfSize:14]]; 
    textField.background = [UIImage imageNamed:@"whiteCell"]; 

    UIButton *btnColor = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [btnColor addTarget:self action:@selector(clearText:) forControlEvents:UIControlEventTouchUpInside]; 
    btnColor.frame = CGRectMake(0, 0, 25, 25); 
    [btnColor setBackgroundImage:[UIImage imageNamed:@"clearBut"] forState:UIControlStateNormal]; 
    textField.rightView = btnColor; 
    textField.rightViewMode = UITextFieldViewModeAlways; 
    [textField addSubview:btnColor]; 


    return YES; 
} 

Это, как я создал кнопку в TextField, и для него только показать при редактировании, поскольку вы можете видеть, что у меня есть вызов clearText, однако я не знаю, как я могу отправить текущее имя текстового поля, которое я должен очистить в вызове clearText.

Я знаю, что могу сделать это трудным путем и определить его индивидуально для каждого из моих текстовых полей, но я уверен, что есть более простой способ сделать это, что я просто не понял.

ответ

1

Предлагаю подклассы UITextField. Это не позволит вам выложить кнопку в раскадровке, но в коде или в файле .nib. Конечно, вы можете использовать подкласс UITextfield в раскадровке.

Внутри подкласса добавить UIButton как подвид и в его методе действия вызова: self.text = @""

Позвольте мне знать, если у вас есть какие-либо дополнительные вопросы.

0

Учитывая, что ваша кнопка была добавлена ​​в текстовое поле в качестве суб-зрения вы можете получить в текстовое поле в кнопках SuperView свойство:

- (void) clearText:(UIButton*)sender 
{ 
    UITextField* textField = (UITextField*)sender.superview; 
    textField.text = nil; 
} 
Смежные вопросы