2017-06-10 238 views
1

我正在開發一款新的iOS應用程序,該應用程序應該支持新的拖放功能(iOS 11)。不過,我希望它可以在較舊的(iOS 10)設備上執行。據我所知,將Deployment Target設置爲iOS 11將阻止應用程序安裝在較舊的設備上。但是,將其設置爲iOS 10.3將導致出現錯誤,指出拖放僅適用於iOS 11.0或更高版本。支持舊版本的iOS

我的問題是:我可以通過提供兩個版本(一個是DnD,一個沒有舊版本),或者讓xcode忽略舊版本的DnD行,讓應用可用於舊設備?或者這僅僅是不可能的?

所有幫助表示讚賞!

回答

3

將所有代表符合性轉移到擴展,然後將@available屬性添加到擴展。例如:

@available(iOS 11.0, *) 
extension DragBoardViewController : UIDragInteractionDelegate { ... } 

如果你寫這些不合格的擴展,Xcode的9會自動給你解決,其添加的@available屬性。請記住,你絕對可以擁有這些在iOS 10中定義的委託方法;他們只是不會被稱爲。 @available這一點是爲了防止代碼的其他部分在沒有首先打包#available檢查的情況下調用它。

探索此方法的一個好方法是下載Apple's sample code,然後將部署目標設置爲10.0。你會看到很多修復 - 它彈出來幫助你完成整個過程,並展示如何在你自己的代碼中完成它。

+0

你救了我一天,謝謝! – Hans