2015-03-18 3 views
-2

Я хочу сделать UITextView с некоторым текстом и одной кнопкой, когда пользователь выбирает эту кнопку, спрятать текст слово словом от UITextView после исправления. Как я могу это сделать? enter image description hereУдалить текст из UITextView в iOS

after some words remove one by one

В 1-ом изображении все слова присутствуют, но во 2-ом экране через некоторое время слова стереть один за другим для этого я использую метод таймера и вызова

firststring = myArray[countNew]; 
NSRange range=[self.textView.text rangeOfString:firststring]; 
    [stringWithRTFAttributes addAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} range:range]; 
    [self.textView setAttributedText:stringWithRTFAttributes]; 
    countNew++; 
if(countNew>=count) 
{ 
    [timer invalidate]; 
    NSLog(@"Timer Stops"); 
} 

где счетчик массив, который хранит полные слова и countNew является целочисленной переменной.

+2

Использование NSUndo Manager –

+0

Как его использовать? пожалуйста, объясните .. –

+0

Пожалуйста, уточните мой обновленный вопрос –

ответ

0

я должен решить этот вопрос вызвать метод идти с таймером , это мой код

-(void)go 
{ 
firststring = myArray[countNew]; 
NSInteger location = location1; 
NSInteger index = index1; 
NSRange range = NSMakeRange(location, [[myArray objectAtIndex:countNew] length]); 
NSLog(@"my range is %@ firstString %@", NSStringFromRange(range) ,firststring); 
[stringWithRTFAttributes addAttribute:NSForegroundColorAttributeName value:[UIColor clearColor] range:range]; 
[_textView setAttributedText:stringWithRTFAttributes]; 
[_textView setFont:[UIFont boldSystemFontOfSize:20]]; 
location1 = [[myArray objectAtIndex:countNew] length] +location +1; 
index1 = index++; 
countNew++; 
if(countNew>=[myArray count]) 
{ 
    [timer invalidate]; 

} 

} 

Здесь location1, index1 - это две длинные данные типа int.

2

Вы можете использовать NSMutableAttributedString и изменить цвет текста конкретных слов на clearColor или backgroundColor. NSTimer - хороший подход для этого.

В качестве примера:

NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"Dummy String" attributes:@{NSForegroundColorAttributeName: [UIColor blackColor]}]; 
[string addAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} range:{range of substring}]; 

И для нескольких вхождений подстроки, вы можете иметь такой подход:

NSString *string = @"Dummy String"; 
NSArray *words = [string componentsSeparatedByString:@" "]; 
... //within your scheduled/for loop: 
static NSInteger location = 0; 
static NSInteger index = 0; 
NSRange range = NSMakeRange(location, [[words objectAtIndex:index] length]); 
location += [[words objectAtIndex:index] length]; 
index++; 
+0

Я использую это, он работает только для первых слов, если слово приходит 2 раза, тогда оно не работает –

+1

Тогда ваш вопрос - это просто «как разбить предложение на слова?» вопрос. Я сделал редактирование. –

+0

@MertBuran, пожалуйста, проверьте мой ответ, с этим я могу удалить текст из текстового поля после времени исправления, но я также хочу, чтобы, если мой текст большой, высота текстового поля, то автоматически textview станет прокруткой и покажет текст, пожалуйста, скажите мне что-нибудь ?? – RaviJSS

Смежные вопросы