1

표시되는 모달보기 컨트롤러가 있고 UITextView가 첫 번째 응답자가되고 키보드가 표시됩니다.모달보기 컨트롤러를 표시 할 때도 키보드를 유지하려면 어떻게해야합니까?

일단이 화면이로드되면 사용자는 제출하기 전에 입력 내용을 분류 할 수 있습니다. 이것은 맨 위에 표시되는 다른 모달보기 컨트롤러를 통해 발생합니다.

이 두 번째 단추가 표시되면 키보드가 닫히고 사용자가 선택한 다음 초기 UITextView가 처음 응답자가 될 때 다시 나타납니다.

키보드를 닫지 않고 두 번째 모달보기 컨트롤러를 표시하려면 어떻게해야합니까?

편집 : 나는 UITextViewDelegate의 일부를 구현했으며, 여전히 원하는 결과를 얻지 못하고 있습니다.

- (BOOL)textViewShouldEndEditing:(UITextView *)textView { 
    return NO; 
} 
+0

'UITextViewDelegate'를 구현 했습니까? 많은 경우 사람들은이 대표를 잊어 버렸습니다. – Raptor

+0

@ShivanRaptor 내 업데이트보기 - 한 가지 방법을 구현했습니다. – barfoon

답변

6

presentModalViewController:animated:을 사용하면이 작업을 수행 할 수 없습니다. 모달보기를 별도의 UIWindow에두고 두 번째 UIWindow의 windowLevel을 높은 값 (예 : UIWindowLevelStatusBar)으로 설정하고 화면에서 직접 애니메이션을 적용하거나 애니메이션을 적용해야합니다. 두 번째 뷰 컨트롤러는 전혀 필요하지 않습니다.

XIB에서 새로운 최상위 UIWindow 개체를 만듭니다. 두 번째보기를이 창에 둡니다. 창을보기 컨트롤러의 콘센트에 연결하십시오. (나는 내 ​​테스트 코드를 콘센트 otherWindow라고하지만 overlayWindow 더 좋은 이름이됩니다 콘센트가 strong 또는 retain 선언 할 필요가있다..) 뷰 컨트롤러에서

, 이러한 방법 구현 :

- (IBAction)presentOverlay:(id)sender 
{ 
    CGRect frame = [UIScreen mainScreen].applicationFrame; 
    frame.origin.y += frame.size.height; 
    self.otherWindow.frame = frame; 
    self.otherWindow.windowLevel = UIWindowLevelStatusBar; 
    self.otherWindow.hidden = NO; 
    [UIView animateWithDuration:.25 animations:^{ 
     self.otherWindow.frame = [UIScreen mainScreen].applicationFrame; 
    }]; 
} 

- (IBAction)dismissOverlay:(id)sender 
{ 
    [UIView animateWithDuration:.25 animations:^{ 
     CGRect frame = [UIScreen mainScreen].applicationFrame; 
     frame.origin.y += frame.size.height; 
     self.otherWindow.frame = frame; 
    } completion:^(BOOL completed){ 
     self.otherWindow.hidden = YES; 
    }]; 
} 

사용 이것들은 오버레이 뷰를 표시하거나 해제합니다.

+0

두 번째보기 컨트롤러에는 키보드 사용이 필요하지 않습니다. 다른보기 컨트롤러가 모달 위에있는 경우에도 첫 번째보기의 키보드가 계속 나타나길 원합니다. – barfoon

+0

내 대답이 제공하지 않는 것을 당신이 무엇을 요구하는지 이해할 수 없다. (네가 canBecomeFirstResponder 메소드를 정의하기 위해 두 번째 뷰 컨트롤러가 필요하다는 언급은하지 못했다. 내보기 케이스는 내가보기 컨트롤러를 모달로 표시 할 때 키보드가 계속 나타나게합니다. –

+0

내 의견을 다시 읽으십시오 - 두 번째 컨트롤러는 키보드 (약 10 항목의 tableview)를 사용하지 않습니다. 테이블 뷰는 전체 화면을 차지하고 행이 선택되면 닫힙니다. 이 컨트롤러가 사라지면 첫 번째보기의 키보드가 사라지지 않는 키보드가 나타납니다. – barfoon