В некоторых местах это вызывает проблемы с устаревшим кодом. Например, с помощью этой строки:
"notificationCenter.addObserver(self, selector: #selector(adjustForKeyboard), name: NSNotification.Name.UIKeyboardWillHide, object: nil)"
Поскольку я включил клип приложения с более поздней версией iOS в качестве целевого объекта для файла, содержащего код, я получаю ошибку компиляции:
"UIKeyboardWillHide" переименован в "UIResponder.keyboardWillHideNotification". Замените "UIKeyboardWillHide" на "UIResponder.keyboardWillHideNotification"
Я думал, что использование #availble решит эту проблему:
Код: Выделить всё
if #available(iOS 13.0, *) {
// For iOS 13.0 and later
notificationCenter.addObserver(self, selector: #selector(adjustForKeyboard), name: UIResponder.keyboardWillHideNotification, object: nil)
} else {
// For iOS 12.0
notificationCenter.addObserver(self, selector: #selector(adjustForKeyboard), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
Я пробовал использовать
Код: Выделить всё
#if APPCLIP
notificationCenter.addObserver(self, selector: #selector(adjustForKeyboard), name: UIResponder.keyboardWillHideNotification, object: nil)
#else
notificationCenter.addObserver(self, selector: #selector(adjustForKeyboard), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
#endif
Очевидно, что у меня может быть два файла, один для клипа приложения. и один для основного приложения, но это не идеально, так как это будет означать, что если в будущем потребуется внести изменения в код, их придется вносить дважды.
Есть ли у кого-нибудь более чистое решение ?
Подробнее здесь: https://stackoverflow.com/questions/792 ... h-have-dif