有些情況下,我們可能需要隱藏鍵盤,但是保持輸入框的編輯狀態,光標不消失. 比如:在界面上加上語音輸入功能.
//1.視圖取消編輯態
[self.view endEditing:YES];
//2.輸入框取消第一響應
if ([self.textView canResignFirstResponder]) {
[self.textView resignFirstResponder];
}
以上方法, 雖然成功的隱藏鍵盤, 但是其原理都是通過取消輸入框的第一響應實現的.而取消了輸入框的響應狀態, 自然光標就消失, 如果需要保持光標, 就需要用到:
//替換輸入視圖(隱藏系統鍵盤或可使用自定義)
_textView.inputView = [[UIView alloc] initWithFrame:CGRectZero];
_textView.inputAccessoryView = [[UIView alloc] initWithFrame:CGRectZero];
[_textView reloadInputViews];
//輸入視圖為系統默認鍵盤
_textView.inputView = nil;
_textView.inputAccessoryView = nil;
使用以上方法, 在iPad + iOS 9 以上系統中, 會在鍵盤上方出現toolbar無法取消的情況:

這時候需要用到:
// iPad + iOS > 9.0 取消鍵盤上的toolbar
if ([iOSVersion floatValue] >= 9.0 ) {
UITextInputAssistantItem* item = [_textView inputAssistantItem];
item.leadingBarButtonGroups = @[];
item.trailingBarButtonGroups = @[];
}
