2016-01-02 83 views
11

我設計了自定義鍵盤擴展,並且能夠正確輸入文本。然而,我似乎無法弄清楚什麼時候啓用大寫鍵盤和小寫字母。這主要是因爲以下功能無法正確返回已輸入的文本之前/之後。有時他們會返回零,有時只有最後幾個字符等等。很多時候,這些方法甚至根本就沒有被調用。iOS自定義鍵盤擴展自動大寫

- (void)textWillChange:(id<UITextInput>)textInput 

- (void)textDidChange:(id<UITextInput>)textInput 

我想通了以下場景時,我需要讓我的大寫字母鍵盤:

  1. 文本長度爲0或零
  2. 當進入一個時期,我需要添加一個空格和大寫鍵盤
  3. 將光標放置在光標之前的字符爲句號或空格之前且該句號爲句點之前的位置。
  4. 當用戶選擇整個文本「全選」
  5. 當用戶選擇了整個文本,並刪除所有
  6. 當用戶退格和新的字符之前光標是句點或空格在此之前,是一段。
  7. 當用戶粘貼文本和光標之前的字符是一個句點或一個空格之前,那是一個句點。

此外,如果以上是可能的,是否有可能也得到最後輸入的「整個」字,我可以用於字典搜索,如預測類型?

我已閱讀蘋果文檔它指出,用戶希望自動大寫,所以我敢肯定這應該是可能

https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html

+0

您是否找到了解決方案? – Sekhar

回答

2

E.G. textField被命名爲你的UITextField實例。初始化後放置這個。

textField.autocaptializationType = UITextAutocapitalizationTypeSentences

這應該給你所有你所提到的情況下的大寫字母。

確定要使您的自定義鍵盤採用UITextInputTraits協議,請執行以下操作。

@interface MyCustomKeyboard : UITextInput <UITextInputTraits> //Now adopts the UITextInputTraits protocol. 

- (instancetype)init { 
    self = super.init; 

    if(self) { 
     //Here you can set the properties that come with the protocol 
     self.autocapitilizationType = UIAutocapitalizationTypeSentences; 

     } 
} 
+0

如何獲取UIInputText實例?我沒有看到那個地方:( –

+0

哦,我認爲你已經到了一些東西了!讓我嘗試閱讀更多有關'UITextInput'的文字確實改變方法返回並看看是否有方法來查找文本。給你! –

+0

Xcode在製作鍵盤擴展程序時遇到的最大問題是slog和斷點不能與設備一起工作哦,在模擬器上測試後會回覆給你 –