I'm using the NSTextFinder API with the stringAtIndex:len:effectiveRange: style
of exposing the text.
I have a test case which has 4 strings in it, "foo1" .. "foo4". I show the
findbar, type 'foo', and click the 'find next' control.
Here are the calls that my client receives and the results being passed back.
firstSelectedRange = {0, 0} (char)
stringLength:16
firstSelectedRange = {0, 0} (char)
stringAtIndex:0 len:4 effRange:{0, 4} 'foo1'
stringAtIndex:4 len:4 effRange:{4, 4} 'foo2'
stringAtIndex:8 len:4 effRange:{8, 4} 'foo3'
stringAtIndex:12 len:4 effRange:{12, 4} 'foo4'
setFirstSelectedRange = {0, 3}
KESIImageView+Finding scrollRangeToVisible: = {0,3}
So far, so good. But when I check the replace checkbox, then click the replace
control, I see the following:
--- replace "foo" with "BA"
stringLength:16
firstSelectedRange = {0, 3} (char)
replaceCharactersInRange: {0, 3} withString:'BA'
setFirstSelectedRange = {0, 2}
firstSelectedRange = {0, 2} (char)
stringAtIndex:2 len:3 effRange:{0, 3} 'BA1'
stringAtIndex:3 len:4 effRange:{3, 4} 'foo2'
stringAtIndex:7 len:4 effRange:{7, 4} 'foo3'
stringAtIndex:11 len:4 effRange:{11, 4} 'foo4'
stringAtIndex:15 len:0 effRange:{15, 0} '(null)'
stringAtIndex:15 len:0 effRange:{15, 0} '(null)'
stringAtIndex:15 len:0 effRange:{15, 0} '(null)'
… <endless loop>
NSTextFinder keeps asking about the string that starts at index 15, but because
of the replacement, the only flattened string is only 15 chars long. My
'stringLength' is only called before the replace, not after.
Incremental searching is not enabled, so it's not that I'm forgetting to call
-(void)noteClientStringWithChange.
Am I doing something wrong? How can I get NSTF to understand that the client
doesn't have anything at index 15?
_______________________________________________
Cocoa-dev mailing list ([email protected])
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 [email protected]