2016-09-06 2 views
1

UIKeyboardWillShowNotification 여러 번했다.아이폰 OS - 내가있는 viewDidLoad <strong>UIKeyboardWillShowNotification</strong>에 알림을 생성하고 <strong>viewwilldisappear</strong>에 제거하고 때 화면 잠금

키보드가 화면에 나타나고 알림이 예상대로 한 번 호출되면 화면이 잠 깁니다. 알림은 번이며 원하지 않는 기능을 생성합니다.

알림이 호출되는 이유는 무엇입니까? 이 시나리오에서 어떻게 방지 할 수 있습니까?

나는이 방식의 viewDidLoad에 통지 옵저버를 추가하고

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(keyboardWillShow:) 
              name:UIKeyboardWillShowNotification 
              object:nil]; 

편집 : 내가 대신 잠금 화면의 배경에 응용 프로그램을 보내 같은 결과를합니다.

답변

0

경우에 따라 알림을 여러 번 호출하면 addObserver 호출이 여러 번 표시되거나 사용이 끝나면 관찰자가 제거되지 않습니다.

은 간단하게이 일을 수행합니다

  • 당신이 viewwilldisappear 방법 관찰자를 제거 언급 한 바와 같이. 따라서 &을 디버그하여 호출되는지 확인하십시오. 이 메소드가 호출되지 않으면 viewDidUnload 메소드에서 제거하려고 시도하십시오.
  • 그래도 옵저버 라인을 제거하기 전에 옵저버 코드를 제거하기 만하면 옵저버를 제거 할 수 없습니다. 그게 전부 야. 확실히 작동 할 것입니다. 참고

:

  • 솔루션 난 당신에게 제안은 이미 &가 & 내 말에 잘 작동 테스트를 시도합니다.

희망이 있으면 도움이 될 것입니다.

+0

분명히 말한 것들이 효과가 있습니다. 하지만 사실은 키보드에 Observer를 추가하는 것입니다. 알림은 viewdidload에서 한 번 실행되고 결코 다시 초기화되지 않습니다. viewwilldisappear 백그라운드로 앱을 보내지 않아도 뷰가로드되지 않았습니다. 이것은 애플에서 문제가되어야한다. 정확한 문제에 대해 더 이상의 답변을 얻지 못하면 정확한 답을 표시 할 것입니다. – Hassy

+0

@ghazi_jaffary 디버그하고 어떤 viewcontroller 대리자 메서드 호출을 참조하십시오. viewDidUnload가 귀하의 케이스에서 호출 할 수있는 것처럼 – Mayur

+0

@ghazi_jaffary 당신은 addObserver가있는 viewcontroller를 제시하고 있습니까? –

2

내가 버튼 클릭에 뷰 컨트롤러를 발표했다

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(keyboardWillShow:) 
               name:UIKeyboardWillShowNotification 
               object:nil]; 

같은 일이 내게 무슨 일이 생긴 것을. ViewController viewdidload를 표시 할 때마다 addObserver를 추가합니다. 그래서 메소드는 여러 번 호출됩니다.

+0

필자의 경우 복수 시간이 아닌 한 번만 호출됩니다. – Hassy

+0

@Hassy 앱이 배경 UIKeyboardWillShowNotification을 여러 번 실행하면 여러 번 호출됩니다. 그것은 문제가있을 수 있습니다. –

+0

예, OS 문제 일 가능성이 큽니다. – Hassy