2013-05-30 7 views
0

Я новичок в iphone development.i хочу дать предупреждение, если текст textfield's - это изменение или нет. Как я могу проверить текст текстового поля на предыдущие значения и текущие значения?как проверить прежнее значение текстового поля и измененное значение

мой код

UITextField *txtCon; 

NSString *strname; 

txtCon.text = @"hello"; 

strname = txtCon.text; 

if(txtCon.text == strname) 
{ 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Rate on the Appstore!" 
               message:@"changed" 
               delegate:self 
             cancelButtonTitle:@"Later" 
             otherButtonTitles:@"OK", nil]; 
[alert show]; 
[alert release]; 
} 
else 
{ 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Rate on the Appstore!" 
               message:@"not changed" 
               delegate:self 
             cancelButtonTitle:@"Later" 
             otherButtonTitles:@"OK", nil]; 
[alert show]; 
[alert release]; 
} 

ответ

1

Попробуйте это ...

-(void)textFieldDidEndEditing:(UITextField *)textField 
    { 
     if ([textField.text isEqualToString:strname]) 
     { 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Rate on the Appstore!" 
                message:@"changed" 
                delegate:self 
              cancelButtonTitle:@"Later" 
              otherButtonTitles:@"OK", nil]; 
      [alert show]; 
      [alert release]; 
     } 
     else 
     { 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Rate on the Appstore!" 
                message:@"not changed" 
                delegate:self 
              cancelButtonTitle:@"Later" 
              otherButtonTitles:@"OK", nil]; 
      [alert show]; 
      [alert release]; 
     } 

} 
+0

textField.textColor ?? –

+0

Простите, дорогая ... Глупая ошибка ... –

0

if(txtCon.text == strname) этот код неправильно, вы не можете сравнить две строки, как это. правый метод,

в файле .h

@interface ViewController : UIViewController 
{ 
    NSString * oldValue; 
    NSString * newValue; 
} 

в .m файл

- (void)viewDidLoad 
{ 
    oldvalue = txtCon.text; 
} 
-(void)textFieldDidEndEditing:(UITextField *)textField 
{     
    newValue = txtCon.text 
} 

- (IBAction)yourBtn:(id)sender {     
    if ([oldvalue isEqualToString:newValue]) { 
      //write your alert code here 
    }else{ 
      //write your alert code here 
      oldvalue =newValue; 
    } 
} 

В противном случае ваш код выглядит красиво. textFieldDidEndEditing вызывается, когда конец редактирования текстового поля в это время сравнивает его с предыдущим значением, если оно не равно, чем синтаксис нового значения для строки.

Я рекомендую вам использовать свое исходное текстовое поле вместо textField по этому коду if ([txtCon.text isEqualToString:strname]). becoz, если у вас более одного текстового поля, чем его лучше использовать оригинальное имя.

+0

thanx для справки .. но я хочу проверить, что значения изменены или нет при нажатии кнопки на событие .. не на делегат текстового поля. – Sonu

+0

чем вместо '- (void) textFieldDidEndEditing: (UITextField *) textField' записывает событие нажатия кнопки. – Dilip

+0

Посмотрите мой ответ сейчас ... – Dilip

0
-(void)textFieldDidEndEditing:(UITextField *)textField 
{  

    if ([textField isEqual:txtCon]) 
    { 
     // Code to get edited value of textfield 
    } 
} 

это поможет, если есть много TextFields ..

1

Вы должны создать свойство:

@property (nonatomic, strong) NSString *lastTextInTextField; 

инициализировать его в viewDidLoad так:

self.lastTextInTextField = txtCon.text; 

а затем, когда ваша кнопка будет нажата, сравните значение сохраненного текстового поля с текстовыми полями strin g:

if ([self.lastTextInTextField isEqualToString:txtCon.text]) 
{ 
    // matches the old one; 
} 
else 
{ 
    // not matched 
} 

// then just set this property value to current textfield string. 
self.lastTextInTextField = txtCon.text; 
Смежные вопросы