2

Я работаю над проектом типа социальных сетей и сталкиваюсь с одной серьезной проблемой.Override UITextField getter-setter

Этот проект находится в iTunes с 2 лет, поэтому многие данные пользователя уже находятся в серверной БД.

Теперь наш клиент говорит, что каждая буква текста TextFiled должна быть capital.I можно привязать новый пользовательский ввод с нижней строкой в ​​категории UItextfiled.

self.autocapitalizationType = UITextAutocapitalizationTypeWords; 

но как насчет существующих данных? Данные, которые я показываю в текстовом поле, когда существующий пользователь пойдет для редактирования.

У меня есть категория, применяемая в тексте UItextField для согласования цвета и шрифта, но как я могу переопределить метод UItextFiled setter?

Или предложите мне другой способ. Потому что есть более сотни текстовых файлов, как я могу справиться с ним? Существует много классов, а не код для каждого класса, что будет лучшим решением?

У меня есть этот код в UItextField + CustomText категория.

- (void)setText:(NSString *)str {  

    //str= uppercase code 
    //self.text=str;  //this is recursive fn call 
} 

Этот сеттер вызывается каждый раз, когда я задаю какой-либо текст в любом текстовом поле (textfield.text), но, как, что модифицированное ул назначить снова к этому конкретному текстовому полю.

ответ

0

Вам нужно изменить текст, этим методом путем обновления значения ул чем:

Просто вызовите этот метод:

[self setText:@"ENTER TEXT"]; 

Что она делает это будет называть ул метод & будет обновлен новая строка &, которая будет снова назначена textField.

Надеюсь, это то, что вы ищете.

+0

Я переопределение сеттера и это [само SetText: @ «.txt»] будет называть себя снова и еще раз. –

+0

@utkalpatel, почему он снова будет снова и снова? в то время как вы устанавливаете значение только один раз – Mayur

+0

Я написал этот метод в UItextfiled + custom category.So, когда есть где, когда я написал текстовое поле кода.текст, который этот метод будет вызывать, а str имеет значение, подобное «австралия», теперь я сделаю это «Австралия», но когда напишу [self setText: str], тогда он будет называть это сам, потому что у меня есть переопределяющий setter. –

1

Может быть, вы можете использовать цель изменить:

[textField addTarget:self 
      action:@selector(textFieldDidChange:) 
forControlEvents:UIControlEventEditingChanged]; 

лучше будет установлен в текстовом поле autocapitalizationType

self.textfield.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters; 
1

Вы должны установить Ивар непосредственно при использовании пользовательских сеттеров. Другим разумным будет рекурсивный бесконечный стек, такой же, как ваш код. После должно быть хорошо в вашем случае

- (void)setText:(NSString *)str {  
    strUpperCase= uppercase code 
    _str = strUpperCase;// or str = strUpperCase; // One of this 
} 
1

Просто позвоните методам супер в ваших переопределениях:

- (NSString *)text 
{  
    // do your extra stuff here 
    // ... 

    return [super text]; 
} 

- (void)setText:(NSString *)text 
{ 
    [super setText:text]; 

    // do your extra stuff here 
    // ... 
}