UITextField падает, если изменение текста при редактировании изменилось - PullRequest
3 голосов
/ 28 февраля 2012

Я написал простое приложение для ios5 (включая сборщик мусора), которое имеет одно представление и UITextField Мне нужно проанализировать входной текст в этом UITextField вот мой код заголовочный файл:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITextFieldDelegate>
{
    IBOutlet UITextField *myTextField;
}

@property (nonatomic, retain) IBOutlet UITextField *myTextField;

-(IBAction)editingChanged:(UITextField *)sender;

editingChanged: отслеживается с изменением редактирования события отправки, поэтому этот метод вызывает каждый раз, когда пользователь что-то меняет в моем UITextField

часть файла реализации:

#pragma mark - textField

-(NSString *)stringWithoutAbc:(NSString *)sourceString
{

    NSString *resultString=[sourceString stringByReplacingOccurrencesOfString:@"abc:" withString:@""];
    if (![resultString isEqualToString:sourceString])
    {
        NSLog(@"    sourceString: %@", sourceString);
        NSLog(@"    resultString: %@", resultString);
    };
    return resultString;
}

-(IBAction)editingChanged:(UITextField *)sender
{
    NSLog(@"editing Changed. text: %@", sender.text);

    //removing "abc:" from string in text field
    NSString *str=[self stringWithoutAbc:sender.text];

    //if something was removed - changing text in text field
    if (![str isEqualToString:sender.text])
    {
        sender.text=str;
    };
}

Каждый раз, когда пользователь изменяет текст в UITextField, мы удаляем строки «abc:» из этого текста, используя стандартный метод NSString.

Проблема в том, что приложение нестабильно. Иногда происходит сбой при удалении «abc:». Помоги мне, пожалуйста. Как решить эту проблему?

Ответы [ 2 ]

4 голосов
/ 28 февраля 2012

Вы можете использовать метод делегата ниже textField: -

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
1 голос
/ 28 февраля 2012

Если вы используете Arc, вам не нужно сохранять объект.И, кстати, ARC не сборщик мусора.http://longweekendmobile.com/2011/09/07/objc-automatic-reference-counting-in-xcode-explained/ МОЖЕТ, потому что вы используете retain в textField.

...