
2014年6月17日 星期二
2014年6月13日 星期五
iOS7 視圖移轉(畫面遷移)
2014年6月5日 星期四
iOS 8 自訂鍵盤試作
前兩天 iOS8 的登場,筆者覺得亮點挺多、延伸性很廣。雖然習慣看硬不看軟的國內媒體似乎還是不夠滿意的樣子。
iOS8 提供了Extension 機制,而其中筆者第一個想試作的,就是:自訂鍵盤。
二話不說,趕快來介紹一下。
1. 未來可以下載實作自訂鍵盤的 App,安裝後就能在「設定」-> 「鍵盤」-> 「新增鍵盤」中看到 "購買的鍵盤" 的項目。只要用以往一樣的方式新增鍵盤,就可以跨 App 地使用各種自訂鍵盤了哦。
2. 開發方面,要先安裝好 Xcode 6 以上版本(含beta),然後使用 iOS8 模擬器 (有測試機直接安裝 iOS8 更好)來運行 App。
1. 新增 Project
2. 新增 Target,並選定「iOS」-> 「Application extension」-> 「Custom Keyboard」。接下來輸入 Project Name、選定開發語言 (也可以選 Swift)後就完成了哦。
3. Target 新增完後,於 Project navigator 中會產生新 Target 對應的 Group,預設會有 Info.plist 及程式檔 (使用 Objective-C 的話,會有一對 .h/.m 檔)
4. 預設範例裡只有一個鍵:可切換鍵盤,該鍵的配置方式是使用程式碼,而非 IB。我的試作使用 xib,選擇在 initWithNibName:bundle 中自行建立並 add subview。
5. 向左刪除一個字元:[self.textDocumentProxy deleteBackward];
6. 切換鍵盤:[self advanceToNextInputMode];
7. 這裡的 self 指的是 UIInputViewController 子類別的實體。UIInputViewController 是:
NS_CLASS_AVAILABLE_IOS(8_0) @interface UIInputViewController : UIViewController
8. 要在 textField/textView 等元件輸出字串時,使用:[self.textDocumentProxy insertText:@"對應鍵盤邏輯的文字"];
9. 其餘按鍵的部分就和一般的 App 開發無異。
1. 先選擇 App 原來的 Target 進行程式安裝,再選擇 Extension Target 進行安裝。
2. 於 「設定」-> 「鍵盤」-> 「新增鍵盤」 中加入自訂鍵盤
3. 接下來就可以開任意一個 App (備忘錄、Safari...),切換鍵盤到自訂鍵盤後進行輸入。
1. 就筆者有試用到的:在 Spotlight 或使用提醒事項新增列表時,無法進行鍵入。
2. 依官網說明,設定好 App 本身的 Target 及 Extension 的 Target 中 Info.plist 的 bundle display name 後,就可以在正常顯示自行的鍵盤名稱。
如下:
(1) Keyboard group name in Purchased Keyboards list in Settings
(2) Keyboard name in Settings
(3) Keyboard name in globe key menu
不過我設定後,第(3)的顯示不正常:當設備的語言環境為中文時,長壓「地球」按鈕時,出現的是「繁體中文」;若設備的語言環境為英文時,則顯示「English」。
希望在後續版本會改掉。
https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/index.html#//apple_ref/doc/uid/TP40014214-CH20-SW1
https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html
iOS8 提供了Extension 機制,而其中筆者第一個想試作的,就是:自訂鍵盤。
二話不說,趕快來介紹一下。
I. Introduction
1. 未來可以下載實作自訂鍵盤的 App,安裝後就能在「設定」-> 「鍵盤」-> 「新增鍵盤」中看到 "購買的鍵盤" 的項目。只要用以往一樣的方式新增鍵盤,就可以跨 App 地使用各種自訂鍵盤了哦。
2. 開發方面,要先安裝好 Xcode 6 以上版本(含beta),然後使用 iOS8 模擬器 (有測試機直接安裝 iOS8 更好)來運行 App。
II. Implementation
1. 新增 Project
2. 新增 Target,並選定「iOS」-> 「Application extension」-> 「Custom Keyboard」。接下來輸入 Project Name、選定開發語言 (也可以選 Swift)後就完成了哦。
3. Target 新增完後,於 Project navigator 中會產生新 Target 對應的 Group,預設會有 Info.plist 及程式檔 (使用 Objective-C 的話,會有一對 .h/.m 檔)
4. 預設範例裡只有一個鍵:可切換鍵盤,該鍵的配置方式是使用程式碼,而非 IB。我的試作使用 xib,選擇在 initWithNibName:bundle 中自行建立並 add subview。
5. 向左刪除一個字元:[self.textDocumentProxy deleteBackward];
6. 切換鍵盤:[self advanceToNextInputMode];
7. 這裡的 self 指的是 UIInputViewController 子類別的實體。UIInputViewController 是:
NS_CLASS_AVAILABLE_IOS(8_0) @interface UIInputViewController : UIViewController
8. 要在 textField/textView 等元件輸出字串時,使用:[self.textDocumentProxy insertText:@"對應鍵盤邏輯的文字"];
9. 其餘按鍵的部分就和一般的 App 開發無異。
III. Deployment
1. 先選擇 App 原來的 Target 進行程式安裝,再選擇 Extension Target 進行安裝。
2. 於 「設定」-> 「鍵盤」-> 「新增鍵盤」 中加入自訂鍵盤
3. 接下來就可以開任意一個 App (備忘錄、Safari...),切換鍵盤到自訂鍵盤後進行輸入。
IV. Issue
1. 就筆者有試用到的:在 Spotlight 或使用提醒事項新增列表時,無法進行鍵入。
2. 依官網說明,設定好 App 本身的 Target 及 Extension 的 Target 中 Info.plist 的 bundle display name 後,就可以在正常顯示自行的鍵盤名稱。
如下:
(1) Keyboard group name in Purchased Keyboards list in Settings
(2) Keyboard name in Settings
(3) Keyboard name in globe key menu
不過我設定後,第(3)的顯示不正常:當設備的語言環境為中文時,長壓「地球」按鈕時,出現的是「繁體中文」;若設備的語言環境為英文時,則顯示「English」。
希望在後續版本會改掉。
V. Reference
https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/index.html#//apple_ref/doc/uid/TP40014214-CH20-SW1
https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html
訂閱:
文章 (Atom)