-
[iOS] 아이패드(iPad)에서 UIActivityViewController를 Present하면 크래쉬가 발생.앱등이에게 살충제를 뿌린다./iOS 2016. 9. 20. 21:06
원인은 간단하다.
아이패드에서는 popover형태로 activityViewController를 보여준다.
따라서 UIActivityViewController의 프로퍼티인 popoverPresentationController에 몇 가지 셋팅을 해주어야 한다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characterslet activityVC = UIActivityViewController(activityItems: [title, url], applicationActivities: activities) activityVC.popoverPresentationController?.sourceView = sender //아이패드에서만 사용될 코드 activityVC.popoverPresentationController?.sourceRect = sender.bounds //아이패드에서만 사용될 코드 viewController.presentViewController(activityVC, animated: true, completion: nil) 2,3번째 줄의 코드처럼 popover될 위치를 잡아주어야 한다.
sourceView는 위 스샷에서는 공유하기버튼 객체가 될 것이고
sourceRect는 버튼의 bounds가 될 것이다.
이 작업을 하지 않으면 아이패드에서는 100% 크래쉬가 발생한다.
'앱등이에게 살충제를 뿌린다. > iOS' 카테고리의 다른 글
[Cocoapods] podfile에서 버전을 관리하는 키워드 (0) 2017.01.16 [Raywenderlich] UIStackView 튜토리얼. (UIStackView Tutorial: Introducing Stack Views) (0) 2017.01.05 [iOS] UIActivityCategory의 두 종류! Action과 Share (1) 2016.09.12 [iOS] dismissBlock이라는 프로퍼티를 이용해보자. (0) 2016.08.13 [iOS] UIButton의 중복터치를 막아라 (0) 2016.07.29