@@ -147,6 +147,25 @@ - (void)analyseHtmlElement:(TFHppleElement* )element withShowType:(MediaShowType
147147- (void )removeItem : (HtmlMediaItem *)delItem {
148148 NSInteger index = [_mediaItems indexOfObject: delItem];
149149 if (index != NSNotFound ) {
150+ // 处理链接左侧字符串尾部的空格
151+ if (delItem.range .location > 0 ) {
152+ NSString *lStr = [_contentDisplay substringToIndex: delItem.range.location];
153+ NSRange lRange = [lStr rangeByTrimmingRightCharactersInSet: [NSCharacterSet whitespaceCharacterSet ]];
154+ NSUInteger diffLength = lStr.length - lRange.length ;
155+ if (diffLength > 0 ) {
156+ delItem.range = NSMakeRange (delItem.range .location - diffLength, delItem.range .length + diffLength);
157+ }
158+ }
159+ // 处理链接右侧字符串头部的空格
160+ if (delItem.range .location + delItem.range .length < _contentDisplay.length ) {
161+ NSString *rStr = [_contentDisplay substringFromIndex: delItem.range.location + delItem.range.length];
162+ NSRange rRange = [rStr rangeByTrimmingLeftCharactersInSet: [NSCharacterSet whitespaceCharacterSet ]];
163+ NSUInteger diffLength = rStr.length - rRange.length ;
164+ if (diffLength > 0 ) {
165+ delItem.range = NSMakeRange (delItem.range .location , delItem.range .length + diffLength);
166+ }
167+ }
168+ // 更新 _contentDisplay 和 delItem 后面 items 的 range
150169 if (delItem.range .length > 0 ) {
151170 [_mediaItems enumerateObjectsWithOptions: NSEnumerationReverse usingBlock: ^(HtmlMediaItem * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
152171 if (idx > index) {
@@ -157,6 +176,7 @@ - (void)removeItem:(HtmlMediaItem *)delItem{
157176 }];
158177 [_contentDisplay replaceCharactersInRange: delItem.range withString: @" " ];
159178 }
179+ // 删除 delItem
160180 [_mediaItems removeObject: delItem];
161181 }
162182}
0 commit comments