Skip to content

Commit cbc59ad

Browse files
authored
Fixes contextual menu iPad presentation crashes (#757)
1 parent 65c9210 commit cbc59ad

5 files changed

+21
-14
lines changed

Demo/Demo/Gravatar-Demo/DemoAvatarDownloadViewController.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ class DemoAvatarDownloadViewController: BaseFormViewController {
2323
title: "Default Avatar Option:",
2424
subtitle: "Backend driven",
2525
buttonTitle: "Select"
26-
) { [weak self] _ in
27-
self?.selectImageDefault()
26+
) { [weak self] action in
27+
self?.selectImageDefault(sender: action.sender as? UIView)
2828
}
2929

3030
lazy var fetchButton = ButtonField(
@@ -105,7 +105,7 @@ class DemoAvatarDownloadViewController: BaseFormViewController {
105105

106106
private var preferredDefaultAvatar: DefaultAvatarOption? = nil
107107

108-
@objc private func selectImageDefault() {
108+
@objc private func selectImageDefault(sender: UIView?) {
109109
let controller = UIAlertController(title: "Default Avatar Option", message: nil, preferredStyle: .actionSheet)
110110

111111
DefaultAvatarOption.allCases.forEach { option in
@@ -119,6 +119,7 @@ class DemoAvatarDownloadViewController: BaseFormViewController {
119119
}
120120

121121
controller.addAction(UIAlertAction(title: "Cancel", style: .cancel))
122+
controller.popoverPresentationController?.sourceView = sender
122123

123124
present(controller, animated: true)
124125
}

Demo/Demo/Gravatar-Demo/DemoBaseProfileViewController.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ open class DemoBaseProfileViewController: UIViewController {
8282
])
8383
}
8484

85-
@objc private func selectPalette() {
85+
@objc private func selectPalette(sender: UIView?) {
8686
let controller = UIAlertController(title: "Palette", message: nil, preferredStyle: .actionSheet)
8787

8888
paletteTypes.forEach { option in
@@ -102,10 +102,11 @@ open class DemoBaseProfileViewController: UIViewController {
102102
})
103103
}
104104
controller.addAction(UIAlertAction(title: "Cancel", style: .cancel))
105+
controller.popoverPresentationController?.sourceView = sender
105106
present(controller, animated: true)
106107
}
107108

108-
@objc private func selectProfileStyle() {
109+
@objc private func selectProfileStyle(sender: UIView?) {
109110
let controller = UIAlertController(title: "Layout Styles", message: nil, preferredStyle: .actionSheet)
110111
ProfileViewConfiguration.Style.allCases.forEach { option in
111112
controller.addAction(UIAlertAction(title: "\(option.rawValue)", style: .default) { [weak self] action in
@@ -115,6 +116,7 @@ open class DemoBaseProfileViewController: UIViewController {
115116
})
116117
}
117118
controller.addAction(UIAlertAction(title: "Cancel", style: .cancel))
119+
controller.popoverPresentationController?.sourceView = sender
118120
present(controller, animated: true)
119121
}
120122
}

Demo/Demo/Gravatar-Demo/DemoRemoteSVGViewController.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class DemoRemoteSVGViewController: UITableViewController {
8282
return cell
8383
}
8484

85-
@objc private func selectPalette() {
85+
@objc private func selectPalette(sender: UIView?) {
8686
let controller = UIAlertController(title: "Palette", message: nil, preferredStyle: .actionSheet)
8787

8888
paletteTypes.forEach { option in
@@ -102,6 +102,8 @@ class DemoRemoteSVGViewController: UITableViewController {
102102
})
103103
}
104104
controller.addAction(UIAlertAction(title: "Cancel", style: .cancel))
105+
controller.popoverPresentationController?.sourceView = sender
106+
105107
present(controller, animated: true)
106108
}
107109
}

Demo/Demo/Gravatar-Demo/DemoUIImageViewExtensionViewController.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ class DemoUIImageViewExtensionViewController: BaseFormViewController {
2323
title: "Default Avatar:",
2424
subtitle: "Backend driven",
2525
buttonTitle: "Select"
26-
) { [weak self] _ in
27-
self?.selectImageDefault()
26+
) { [weak self] action in
27+
self?.selectImageDefault(sender: action.sender as? UIView)
2828
}
2929

3030
lazy var cancelOngoingButtonField = ButtonField(title: "Cancel") { [weak self] _ in
@@ -60,7 +60,7 @@ class DemoUIImageViewExtensionViewController: BaseFormViewController {
6060

6161
private var preferredDefaultAvatar: DefaultAvatarOption? = nil
6262

63-
@objc private func selectImageDefault() {
63+
@objc private func selectImageDefault(sender: UIView?) {
6464
let controller = UIAlertController(title: "Default Avatar", message: nil, preferredStyle: .actionSheet)
6565

6666
DefaultAvatarOption.allCases.forEach { option in
@@ -71,6 +71,7 @@ class DemoUIImageViewExtensionViewController: BaseFormViewController {
7171
}
7272

7373
controller.addAction(UIAlertAction(title: "Cancel", style: .cancel))
74+
controller.popoverPresentationController?.sourceView = sender
7475

7576
present(controller, animated: true)
7677
}

Demo/Demo/Gravatar-Demo/DemoUploadImageViewController.swift

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ class DemoUploadImageViewController: BaseFormViewController {
1212
title: "Backend selection behavior",
1313
subtitle: "Preserve selection",
1414
buttonTitle: "Select"
15-
) { [weak self] _ in
16-
self?.avatarSelectionTapped()
15+
) { [weak self] action in
16+
self?.avatarSelectionTapped(sender: action.sender as? UIView)
1717
}
1818

1919
lazy var selectAvatarButtonField = ButtonField(title: "Select Image") { [weak self] _ in
@@ -129,11 +129,11 @@ extension DemoUploadImageViewController: UIImagePickerControllerDelegate, UINavi
129129
}
130130
}
131131

132-
@objc private func avatarSelectionTapped() {
133-
setAvatarSelectionMethod(with: emailFormField.text)
132+
@objc private func avatarSelectionTapped(sender: UIView?) {
133+
setAvatarSelectionMethod(with: emailFormField.text, sender: sender)
134134
}
135135

136-
@objc private func setAvatarSelectionMethod(with email: String) {
136+
@objc private func setAvatarSelectionMethod(with email: String, sender: UIView?) {
137137
let controller = UIAlertController(title: "Avatar selection behavior:", message: nil, preferredStyle: .actionSheet)
138138

139139

@@ -147,6 +147,7 @@ extension DemoUploadImageViewController: UIImagePickerControllerDelegate, UINavi
147147
}
148148

149149
controller.addAction(UIAlertAction(title: "Cancel", style: .cancel))
150+
controller.popoverPresentationController?.sourceView = sender
150151

151152
present(controller, animated: true)
152153
}

0 commit comments

Comments
 (0)