Oh bloody hell. I must be tired. That's so obvious - and I'm desperately embarrassed for not taking care of this.
Thank you so much. On 5 May 2014, at 17:47, Uli Kusterer <witness.of.teacht...@gmx.net> wrote: > > On 05 May 2014, at 18:27, Pax <45rpmli...@googlemail.com> wrote: >> When I use this with a plain string it appears to work correctly. I can use >> it to chop up a string into constituent lines as follows (just a test - >> clearly there are better ways of achieving the same result): >> >> NSArray* newLineArray = [StringTools getLocationsOfString:@"\n" >> inString:[attributedRTFString string]]; >> int oldLoc = 0; >> for (NSNumber* locNum in newLineArray) { >> NSLog(@"%@",[[attributedRTFString string] >> substringWithRange:NSMakeRange(oldLoc, [locNum intValue]-oldLoc)]); >> oldLoc = [locNum intValue]; >> } > > This code just splits the string, but doesn't insert anything. > >> This proves, to my satisfaction at least, that the line endings are being >> identified correctly and in the right place. >> >> When I try to use it with the attributed string, rather than the plain text >> representation of the attributed string, it goes wrong. In the interests of >> a quick test, I am trying to insert a string rather than an image. >> >> NSArray* newLineArray = [StringTools getLocationsOfString:@"\n" >> inString:[attributedRTFString string]]; >> if (([imageLocations count]>0)&&([newLineArray count]>0)) { >> for (NSDictionary* imageDetails in imageLocations) { >> unsigned long loc = [[imageDetails objectForKey:@"image >> location"]unsignedLongValue]; >> unsigned long locationForInsert = [[newLineArray >> objectAtIndex:loc]unsignedLongValue]; >> NSAttributedString* testString = [[NSAttributedString >> alloc]initWithString:@"IMAGE HERE" attributes:nil]; >> [attributedRTFString insertAttributedString:testString >> atIndex:locationForInsert]; >> } >> } >> >> I believe that this should cause "IMAGE HERE" to be inserted at specific >> line endings. However, it often inserts into the middle of a paragraph >> instead - usually, but not always, close to where it should put the text. >> Furthermore, the positioning is usually at, or very close, to the correct >> location for the first instance of image insertion - and it gets >> progressively less accurate as it gets through the text. Is there some >> difference between the ways that strings are handled in NSAttributedString >> and NSString? Could there be some problem with characters like Non-Breaking >> Space? > > This actually changes the string by inserting something. The result of the > insertion is that everything following that string is moved down by the > length of the inserted string. You need to either adjust the offsets (by > remembering how many characters you've inserted so far) or avoid touching the > stuff after the insertion by going backwards over the string. > > Cheers, > -- Uli Kusterer > "The Witnesses of TeachText are everywhere..." > http://www.zathras.de > _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com