2012-05-03 1 views
0

Return 키를 사용하여 입력 한 줄 바꿈을 제거하고 싶습니다. 그러나 다음과 같은 작업을 수행하면 텍스트에서 마지막 문자가 제거됩니다. 왜?UITextView, 어떻게 return key : linefeed를 제거합니까?

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text; 
{ 
    NSLog(@"%d %d %@ %@",range.location,range.length, text, [textView text]); 

    if ([text isEqualToString:@"\n"]) { 

     NSString *s = [textView text]; 
     s = [s substringToIndex:[s length] - 1]; // <------------ 

     [tvText setText:[NSString stringWithFormat:@"%@\n>>",s]]; 
    } 
    return YES; 
} 

내가 같은 결과가보고 싶지 :

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text; 
{ 
    NSLog(@"%d %d %@ %@",range.location,range.length, text, [textView text]); 

    if ([text isEqualToString:@"\n"]) { 

     [tvText setText:[NSString stringWithFormat:@"%@\n>>",tvText.text]]; 
     return NO; 
    } 
    return YES; 
} 

답변

4

어쩌면 라인에 독서 문자열 후 일부 하위 문자열에 넣기 :

string = [string stringByReplacingOccurrencesOfString:@"\n;" withString:@""]; 
4

또는, 당신이 이런 일을 할 수 있다고 생각

>>name 
>>yoda 
>>    <---- cursor is moved to the right of ">>" 
1

문제는 shouldChangeCharactersImRange가 호출되고 새로운 텍스트가 실제로 변경되지 않는다는 것입니다 (그 이유는 didChangeCharactersInRange ...가 아닙니다). 따라서 개행 문자가 발생하면 하위 문자열을 사용하여 속이거나 텍스트 뷰에 포함 된 문자열을 저장/처리하고 NO를 반환하십시오.

3

shouldChangeTextInRange는 UITextViewDelegate의 일부이며, 전에 이라고하며, 새 텍스트는 textView에서 변경됩니다. 따라서, 당신은이 작업을 수행 할 수 있습니다 :

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text; 
{ 
    if ([text isEqualToString:@"\n"]) 
    { 
     return NO; 
    } 

    return YES; 
} 
+0

훨씬 더 좋은 답변입니다. – Henning

0

먼저

@interface YourClass : UITextField <UITextFieldDelegate> { 
} 

는 다음 대리자 메서드

-(BOOL)shouldChangeCharactersInRange:replacementString: 
2

사용을 구현하여 .H 파일에 UITextViewDelegate를 추가하려면이 그것으로 더 나은 솔루션에 대한 사용자는 어떠한 경우에도 빈 메시지를 게시 할 수 없습니다.

//These for loops will remove the spaces and new line characters from start and end of the string 

    //&&// 

    NSMutableString *temp = [[NSMutableString alloc] initWithString:posttextview.text]; 

    //Remove spaces and new line characters from start 
    for(int i = 0; i < yourtext.length; i++) 
    { 
     NSString *temp1 = [NSMutableString stringWithString:[temp substringWithRange:NSMakeRange(0,1)]]; 

     if([temp1 isEqualToString:@"\n"] || [temp1 isEqualToString:@" "]) 
     { 
      [temp deleteCharactersInRange:NSMakeRange(0,1)]; 
     } 

     else 
     { 
      break; 
     } 
    } 

    yourtext.text = temp; 

    //Remove spaces and new line characters from end 
    for(int i = 0; i < yourtext.length; i++) 
    { 
     NSString *temp1 = [NSMutableString stringWithString:[temp substringWithRange:NSMakeRange(posttextview.text.length - 1,1)]]; 

     if([temp1 isEqualToString:@"\n"] || [temp1 isEqualToString:@" "]) 
     { 
      [temp deleteCharactersInRange:NSMakeRange(posttextview.text.length - 1,1)]; 

      yourtext.text = temp; 
     } 

     else 
     { 
      break; 
     } 
    } 

    yourtext.text = temp; 

    //**// 
관련 문제