簡體   English   中英

如何使用Storyboard或Xib將iOS自定義鍵盤擴展用作Swift中的可編程自定義輸入視圖

[英]How do I use a iOS custom keyboard extension as a programmable custom input view in Swift using storyboards or xibs

我想使用swift中的自定義鍵盤擴展名設計自己的自定義輸入視圖鍵盤。 現有的Xcode 6.1默認鍵盤集合無法滿足我的應用程序需求。 我想要的是一個可以修改的增強型數字鍵盤,例如在iOS應用商店中的Soulver應用程序中。 http://www.acqualia.com/soulver/iphone/

最終,我不需要自定義鍵盤擴展名即可提供給其他應用程序,但是我不介意我的應用程序是否提供了該功能。 在我看來,自定義鍵盤是開始使用自定義輸入視圖鍵盤的正確位置。

我終於在編輯器中消化了一些限制,並希望使用情節提要或xib。

我確實需要能夠以編程方式在應用程序中選擇鍵盤擴展名。 鍵盤/自定義視圖需要可用於包含它的應用,而無需在iOS設置中激活。

可以將其作為給定要求的擴展來完成,還是可以將自定義鍵盤擴展名輕松轉換為自定義輸入視圖? 您能說明一個還是指出我在搜索時錯過的示例Swift代碼? 謝謝。

我現在正在Swift中編寫鍵盤擴展,強烈建議不要這樣做。 Swift和Keyboard Extension API都是全新的,沒有完整的文檔,它們創建了明顯的學習曲線,並且都存在大量的錯誤或怪異的實現細節。

從您說出問題的方式來看,這聽起來似乎並不像您對iOS開發非常有經驗,並且嘗試一次學習太多的東西是災難的根源。 如果我可以完成當前的項目,那么我將在目標C中完成它,只是大大簡化了我所學的內容。

但好消息是您不需要鍵盤即可在其他應用程序中運行。 這是個好消息,因為在您自己的應用程序中編寫自定義輸入鍵盤類非常簡單,容易,也是一個很好的起點。 有關如何執行此操作的大量現有文檔,包括關於堆棧溢出的出色文章。

如何從iOS應用程序上的自定義鍵盤檢索擊鍵?

更多詳情:

可可中的標准自定義輸入視圖API非常強大,鍵盤擴展中的API幾乎完全被絕育了,因此,使用自定義輸入視圖比使用鍵盤擴展可以做的更多。 要激活鍵盤擴展名,需要讓用戶在其iPhone設置中將其打開,這無法解決,也無法選擇他們在應用程序中選擇的鍵盤(除了完全不允許自定義鍵盤擴展名之外)。

如果您出於任何原因需要訪問Internet或應用程序中的數據(跟蹤使用情況信息,激活應用內購買,訪問首選項),還必須說服用戶打開“完全訪問權限”,這會帶來令人難以置信的可怕警報會向用戶顯示,就像打開它一樣,意味着您可以監視他們並竊取他們的密碼

回到為什么不想在擴展中使用Swift的原因。 首先,Objective C不會導致Xcode的代碼解析器一天崩潰多次,而在Swift中進行開發卻會導致Xcode本身崩潰。 在Objective C中,調試器幾乎總是正確的,在當前版本的Swift中,您通常看不到數組或字典的內容,有時它顯示的內容不准確,並且在單步執行代碼時通常會采取荒謬的做法。 使用Objective Code開發意味着您無需因為Objective C本身的更改而更新代碼,而Swift幾乎可以保證他們將在每個主要版本中進行重大的語法更改(9月的最后一個版本做了)。

開發鍵盤擴展名意味着有時您的擴展名由於神秘原因而無法加載,並且您將需要花費大量時間調試原因。 我的Swift鍵盤擴展有時只用println()語句調試,因為我無法加載調試器。 由於Apple的工具尚不能與Keyboard擴展一起很好地使用,並且也不能與Swift一起很好地工作,因此一起使用它們會使您的痛苦成倍增加。

最終結果是,如果您不需要在自己的應用程序之外使用此鍵盤,則使用Keyboard擴展API構建它是愚蠢的。 如果確實需要使用Keyboard擴展API,那么在Swift中這樣做是愚蠢的。 這是由一個全職工作的傻瓜寫的,他試圖發布基於Swift的鍵盤擴展。

如果您想使用標准的可可定制輸入視圖API,那么使用Swift可能會很好。 您仍然需要處理其他問題,因為它是一門如此年輕的語言,但是您不會因為神秘,看似無法解決的問題而花很多時間來找出它們是否是由Swift,Keyboard Extension API, Xcode及其調試器,或者您自己的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM