Кнопка Отмена не имеет никакого эффекта для CNContactViewController
Это не обман этого вопроса или этого вопроса, потому что эти ответы не сработали.
По какой-то причине кнопка отмены не действует при представлении CNContactViewController
внутри UINavigationController.
Действия по воспроизведению:
- Скопируйте этот вид контроллера.
- Нажмите кнопку отмены.
Ожидаемое поведение:
CNContactViewController
увольняется.
Фактическое поведение:
Ничего не произошло. Точки останова внутри функции делегата никогда не вызываются.
import Foundation
import Contacts
import ContactsUI
class ContactViewController: UIViewController, CNContactViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
createContact()
}
func createContact() {
let contactController = CNContactViewController(forNewContact: nil)
contactController.delegate = self
contactController.allowsEditing = true
contactController.allowsActions = true
contactController.title = ""
contactController.view.layoutIfNeeded()
let contactNavController = UINavigationController(rootViewController: contactController)
contactNavController.navigationBar.backgroundColor = UIColor.red
present(contactNavController, animated:true)
}
// =============================================================================================================
// MARK: CNContactViewControllerDelegate Functions
// =============================================================================================================
func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?) {
viewController.dismiss(animated: true, completion: nil)
dismiss(animated: true, completion: nil)
print("hi")
}
func contactViewController(_ viewController: CNContactViewController, shouldPerformDefaultActionFor property: CNContactProperty) -> Bool {
print("yo")
return true
}
// =============================================================================================================
// MARK: UIViewController Functions
// =============================================================================================================
override var prefersStatusBarHidden: Bool {
return true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
1 ответ
Я попробовал ваш код прямо сейчас; И кнопка отмены отклоняет вид контроллера без проблем. Проблема в моем случае заключалась в том, чтобы показать контроллер вида, который был исправлен путем изменения настоящего contactNavController
чтобы:
DispatchQueue.main.async {
self.present(contactNavController, animated:true)
}
попробуй, может у тебя проблема с нитками