iOS 扩展键盘获取长文本

2024-09-18  本文已影响0人  红叶潇潇

苹果为了保护用户隐私,键盘只能获取光标附近的50-100左右的字符,但是做为扩展键盘应用,有时候会有获取所有文案的需求,通过循环删除,发现textDocumentProxy并没有更新,所以pass掉删除获取的方法,后续发现通过调整光标位置textDocumentProxy会更新,然后循环获取即可

不废话直接上代码

-(void)checkAllString{
    NSString *string = [self.textDocumentProxy.documentContextBeforeInput copy];
    if(string.length <= 0){
        // 光标恢复回去
        [self.textDocumentProxy adjustTextPositionByCharacterOffset:self.currentText.length];
        
       // 获取完成,做自己的操作即可
        return;
    }
    
    self.currentText = [NSString stringWithFormat:@"%@%@",string,self.currentText];
    // 光标向前移动
    [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];
    });
}
上一篇下一篇

猜你喜欢

热点阅读