2

저는 자체 응용 프로그램에서만 재현 할 수있는 iOS8의 MFMessageComposeViewController와 함께 이상한 버그가 발생했습니다. 현재 App Store에있는 응용 프로그램에 영향을주고 있습니다. iOS8 SDK (iOS8), iOS8 SDK (iPhone 및 iPad)에 내장되어 있습니다.MFMessageComposeViewController iOS8에서 문제가 발생했습니다.

문제는 MFMessageComposeViewController 그것은 텍스트 필드 나 보내기 버튼이없는 컨트롤러를 보여줍니다. 나는 iOS7과 iOS8 사이에서 코드를 변경하지 않았으므로 이것이 왜 일어나는지 확실하지 않다. 코드 자체는 매우 간단합니다 :

MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init]; 
picker.messageComposeDelegate = self; 
[picker setRecipients: @[@"5551112222"]]; 
[picker setBody: @"Test"]; 

[self presentViewController:picker animated:YES completion: ^{ 
    NSLog(@"MFMessageComposeViewController completion handler"); 
}]; 

이는 모습입니다 : 내가 해결 방법에 대한 시도 할 수 있는지에 대한

enter image description here

어떤 아이디어? 완성 처리기에서 textField 및 수신자를 설정하려고했습니다. 최상위 뷰 컨트롤러에서 becomeFirstResponder를 호출 해 보았습니다. 불운. 다시 말하지만, 이것은 iOS7에서 완벽하게 작동합니다. 편집

:

그래서 나는이 링크에서 MFMessageComposeViewController에 대한 애플의 샘플 코드를 발견 https://developer.apple.com/library/ios/samplecode/MessageComposer/Listings/MessageComposerViewController_m.html

내가 구축하고이 응용 프로그램을 실행 MFMessageComposeViewController가 완벽하게 보여주고, 전화 번호를 미리 채우고 텍스트 필드도 사용할 수 있습니다. 하지만 파일을 내 앱에 복사하고 스토리 보드를 내 스토리 보드로 만들 때 'SMS 작성'버튼을 누르면 똑같은 문제가 발생합니다!

여기에 무슨 일이 일어나고 있습니까? 매우 혼란. 그것은 내 자신의 응용 프로그램에서 메시지 작성자가 올바르게 표시되지 않도록하는 구성 일 수 있습니까?

+0

기기를 최신 iOS8로 업데이트하셨습니까? 이 유형의 버그는 iOS8 베타 버전에 있기 때문입니다. – Max

+0

예, 이것은 내 iOS8 기기와 비 -iOS8 빌드를 실행하는 몇 명의 다른 내 앱 사용자입니다. –

답변

2

마지막으로, 대부분의 앱을 해체 한 후 문제를 파악할 수있었습니다.

@implementation UIViewController (UIViewController_Additions) 
-(BOOL)canBecomeFirstResponder { 
    return YES; 
} 

이것은 iOS7에까지 잘 작동했지만, 뭔가 iOS8의와`MFMessageComposeViewController 내부적으로 변경해야합니다 내가 (대신 하위 클래스라는의) 카테고리에있는 UIViewController 시스템 메서드를 재정의하고, 밝혀졌습니다. "네 살짜리 해킹이 너를 엉덩이에 묻기 위해 온다"의 경우

이 링크에 따르면 (Apple 원본을 찾을 수는 없지만)이 방법은 Apple도 권장하지 않습니다. https://stackoverflow.com/a/14259595/145552

관련 문제