蘋果為了保護(hù)用戶隱私肠套,鍵盤只能獲取光標(biāo)附近的50-100左右的字符舰涌,但是做為擴(kuò)展鍵盤應(yīng)用,有時候會有獲取所有文案的需求你稚,通過循環(huán)刪除瓷耙,發(fā)現(xiàn)textDocumentProxy并沒有更新,所以pass掉刪除獲取的方法刁赖,后續(xù)發(fā)現(xiàn)通過調(diào)整光標(biāo)位置textDocumentProxy會更新搁痛,然后循環(huán)獲取即可
不廢話直接上代碼
-(void)checkAllString{
NSString *string = [self.textDocumentProxy.documentContextBeforeInput copy];
if(string.length <= 0){
// 光標(biāo)恢復(fù)回去
[self.textDocumentProxy adjustTextPositionByCharacterOffset:self.currentText.length];
// 獲取完成,做自己的操作即可
return;
}
self.currentText = [NSString stringWithFormat:@"%@%@",string,self.currentText];
// 光標(biāo)向前移動
[self.textDocumentProxy adjustTextPositionByCharacterOffset:-string.length];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self checkAllString];
});
}