2012-12-17 4 views
0

그래서 UITextView에 대한 설명을 읽었으며 키보드의 'Return'버튼을 누르면 키보드가 자동으로 숨겨집니다.xcode에서 UITextView 문제가 발생했습니다.

- (BOOL)textViewShouldReturn:(UITextView *)textView 
{ 
    [myTextView resignFirstResponder]; 
    return NO; 
} 

확실하지 전체 거래는 처음에 작동하지 않는 이유 : 그것은 작동하지 않는하지만, 그래서 나도 그래서도 일을 시도 작동하지 않았다 있다는

- (IBAction)textViewReturn:(id)sender; 
{ 
    [myTextView resignFirstResponder]; 
} 

을 만드는 시도 장소. 누군가 도움이 될지 궁금한가요?

+0

텍스트 뷰의이 * 일반적으로, 사용자가 여러 줄의 텍스트를 입력 할 수 있도록위한 것입니다 *이 경우 당신이 사임하지 리턴 버튼을 필요로하는 명심 대신 키보드를 사용하여 줄 바꿈을 삽입하십시오. 텍스트 한 줄만 있으면 textField가 더 좋은 방법 일 수 있습니다. – lnafziger

+0

네, 그런 상황에서 어떻게 키보드를 숨길 수있는 방법을 찾으라고 제안합니까? @lnafziger – trludt

답변

2

UITextView Class Reference에 Return 키를 누를 때 키보드가 자동으로 숨겨져 있다고하는 내용이 보이지 않습니다.

또한 UITextViewDelegate protocol에는 textViewShouldReturn: 메시지가 없습니다. UITextFieldDelegate protocoltextFieldShouldReturn: 메시지가 있지만 텍스트보기는 텍스트 필드가 아닙니다.

사용자가 Return 키를 누를 때 키보드를 숨기려면 두 가지 작업을 수행해야합니다.

먼저 텍스트보기의 delegate 콘센트에 일부 객체 (일반적으로보기 컨트롤러)를 연결해야합니다. 당신은 당신의 펜촉에 그 작업을 수행 할 수 있습니다, 또는 당신이 당신의 viewDidLoad 방법에 아마 코드에서 작업을 수행 할 수 있습니다

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    myTextView.delegate = self; 
} 

둘째, 당신은 당신의 위임 객체의 textView:shouldChangeTextInRange:replacementText:을 구현해야합니다

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

주 사용자가 개행 문자와 다른 문자가 포함 된 텍스트를 붙여 넣으면 새 라인을 잡을 수 없습니다. 사용자가 Return 키를 누르거나 개행 만 포함 된 텍스트에 붙여 넣을 때만 알림을 보냅니다.

대표자의 클래스를 UITextViewDelegate 프로토콜을 준수한다고 선언 할 수 있습니다.이 경우 Xcode에서 메서드 이름을 자동 완성합니다. 그러나 클래스가 프로토콜을 준수하지 않는 경우에도 작동합니다.

+0

코드의 두 섹션을 모두 입력했습니다. 아무 것도 변경하지 않았습니다. 어떻게 텍스트 뷰의 대리자 콘센트에 어떤 객체를 연결할 수 있습니까? @robmayoff – trludt

+0

펜에서 파일 소유자 (File 's Owner)에서 텍스트보기로 제어 드래그하여 '대리인'콘센트를 선택할 수 있습니다.또한 myTextView가 텍스트 뷰에 실제로 연결되는지 확인해야합니다. –

+0

는 내 스토리 보드입니다. @robmayoff – trludt

1

UITextView의 돌아 가기 단추는 새 줄에 커서를 표시하는 데 사용됩니다. 그러나 리턴 버튼에서 키보드를 제거하려면 다음 코드를 시도하십시오. 사용자가 리턴 버튼을 누르면 키보드를 종료합니다. 그래서 당신의 문제를 확실히 해결 한 다음 코드를 시도하십시오. 당신이 UITextView 대신 UITextField를 사용하려는 경우 귀하의 코멘트 당

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

코드의이 섹션에서. 이후 myTextView 내 텍스트보기라는. myTextView와 함께 textView를 배치 할 때마다 바꿉니 까? @Girish – trludt

+0

그것의 필요 없음. 이 메서드는 현재 textView 인 textView 매개 변수를가집니다. 오직 xib의 각 texview에 대리인을 설정해야합니다. – Girish

+0

나는 지금 당황하고있다. 그 전체 섹션을 썼습니다. 아무것도 바뀌지 않았습니다 ... @Girish – trludt

1

은 다음 일이 당신이 수익을 쳤을 때, 당신은에서 다음과 같은 기능을 구현해야 키보드를 숨기기 위해 것을 제외하고는 동일하게 유지 (당신이 첫 번째를 설정했는지 확인) 텍스트 필드의 위임 :

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 
    return YES; 
} 
관련 문제