그래서 iPhone 앱이 있습니다. 그것은 구조가 간단하며 모두 UINavigationController
을 기반으로합니다.iPhone 스토리 보드, 프로그래밍 방식으로 호출 세그먼트, 내비게이션
하나의보기가있는 스토리 보드, 다른보기에 대한 세그 등이 있습니다.이 다른보기에는이 화면에서 편집하고 싶지 않은 UITextView
이 있습니다. 사용자가이 탭을 사용하면 대신 기본적으로 동일한 텍스트보기를 가진 두 번째 화면으로 이동하지만이 화면은 전체 화면이며 사용자는 이전 화면으로 돌아 가기 전에 해당 화면의 텍스트를 편집합니다.
그래서 textViewShouldBeginEditing
방법을 캡처합니다. 나는 이전에, 스토리 보드 편집기에서 수동으로이 새로운 뷰 컨트롤러로 이전보기 컨트롤러에서 푸시 SEGUE을 생성하고, 정체성의 의해 내가 함께 할 수있는 호출 할 수 있도록 이름 :
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
// This is called when the user clicks into the textView as if to edit it.
// Instead of editing it, go to this other view here:
[self performSegueWithIdentifier:@"editMemoSegue" sender:self];
// Return NO, as I don't actually want to edit the text on this screen:
return NO;
}
이 보인다 합리적. 그리고 그것은 작동합니다. 정렬. 그것은 사실 저를 다른 관점으로 쏘고 있습니다. 다른 뷰의 이벤트가 시작되면서 텍스트 뷰를 첫 번째 응답자로 설정하고 해당 스크린의 텍스트를 편집합니다. 모두 행복합니다.
이전보기로 돌아가려면 뒤로 버튼을 사용하고 싶습니다.
그런 다음 빠르게 찾아냅니다. 내 탐색 스택이 겹쳐져 있습니다. 대부분의 경우, 몇 가지 이유에서 두 개의 새로운 편집 컨트롤러가 스택에 두 번 있기 때문에 처음으로 뒤로 버튼을 누르면 다시 같은 것을 얻게됩니다. 이상하게, 때로는 의도 한대로 작동 할 것이고, 이전 컨트롤러를 한 번만 클릭하면 볼 수 있습니다.
나는 로그를 읽기 시작하고, 나는이 발견2012-12-09 09:41:03.463 APP[8368:c07] nested push animation can result in corrupted navigation bar
2012-12-09 09:41:03.818 APP[8368:c07] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
2012-12-09 09:41:03.819 APP[8368:c07] Unbalanced calls to begin/end appearance transitions for <SecondController: 0x83881d0>.
그래서 분명히 내가 잘못 여기서 뭔가를하고 있어요합니다. 문제는 무엇입니까? 그리고 어떻게하면 아이폰 프레임 워크의 티키 신을 올바르게 달랠 수 있는지 내가 원하는대로 할 수 있을까?
"내포 된 푸시 애니메이션"오류 메시지는 일반적으로 동일한 컨트롤러에 여러 번 푸시 할 때 발생합니다. 위의 코드는 그 부분을 수행하는 유일한 장소입니까? 스토리 보드에 위에서 언급 한 컨트롤러 2 개와 탐색 컨트롤러가 있습니까? – rdelmar
그 코드가 segue가 호출되는 유일한 장소입니다. 이 컨트롤러는 nav 스택의 두 번째 컨트롤러입니다 (A> B> C, B> C에서 발생). – mschultz
뭔가 어딘가에 잘못 설정해야합니다. 게시 한 코드가 잘 작동합니다. 어딘가에 프로젝트를 게시 할 수 있다면 프로젝트를 보지 않고 말할 것도별로 없습니다. – rdelmar