Hi,

Well, I used a tech support incident and it was determined that I should submit 
a bug report, which I have done. (And the tech support incident was credited 
back to my account.)

-- Mike

> Message: 1
> Date: Fri, 10 Apr 2015 19:18:22 -0400
> From: "Michal L. Wright" <m...@raccoonbend.com>
> To: cocoa-dev@lists.apple.com
> Subject: Images Being Substituted in UIText .attributedText
> Message-ID: <ece72d09-3e27-42f8-860f-1a525d218...@raccoonbend.com>
> Content-Type: text/plain;     charset=windows-1252
> 
> Hi,
> 
> I have a pair of almost-matching flat-file database apps, iData Pro for the 
> Mac and iData Pro-Mobile for mobile devices. Datafiles for both apps are 
> written to disk as a plist (xml) file and are almost identical in structure. 
> Up till now, iData Pro-Mobile could display only plain text. Now I’m 
> modifying it to display formatted text, like the Mac version.
> 
> Datafiles are organized into records.
> 
> Each record  includes a block of RTFD text, which is an NSAttributedString 
> object that is displayed in an NSTextView in iData Pro and in a UITextView in 
> iData Pro-Mobile. A typical NSAttributedString is encoded as NSData like this 
> in the xml:
> 
> <key>TextRTFD</key>
> <data>
> cnRmZAAAAAADAAAAAgAAAAcAAABUWFQucnRmAQAAAC51AQAAKwAA
> AAEAAABtAQAAe1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2Fy
> dGYxMjY1XGNvY29hc3VicnRmMjEwCntcZm9udHRibFxmMFxmbmls
> XGZjaGFyc2V0MCBHZW9yZ2lhO30Ke1xjb2xvcnRibDtccmVkMjU1
> XGdyZWVuMjU1XGJsdWUyNTU7fQpccGFyZFx0eDU2MFx0eDExMjBc
> dHgxNjgwXHR4MjI0MFx0eDI4MDBcdHgzMzYwXHR4MzkyMFx0eDQ0
> ODBcdHg1MDQwXHR4NTYwMFx0eDYxNjBcdHg2NzIwCgpcZjBcZnMy
> NCBcY2YwIE1yLiBGcmVkIEZhcmtsZVwKMTIzNDU2NyBOb3J0aHdl
> c3QgQnJvYWR3YXkgQXZlLlwKQXVzdGluLCBUWCAgNzc3NzdcClwK
> V29yazogNTE1LTU1NS0wOTg3XApGQVg6IDUxNS01NTUtNjc4OVwK
> SG9tZTogNTE1LTU1NS00NTY3XApcCn0BAAAAIwAAAAEAAAAHAAAA
> VFhULnJ0ZhAAAADBUAtVtgEAAAAAAAAAAAAA
> </data>
> 
> The UIText and NSAttributedString calls for iOS are a bit different from the 
> ones I use on the Mac, but I now have the mobile app showing formatted text 
> with embedded images. I’ve added “Insert Image” and “Set Font” menu items to 
> the editing menu, and they are working fine. “Insert Image” gives access to 
> saved photos, and “Set Font” includes a font picker and a color picker.
> 
> The results are great, except for one rather bizarre glitch — when stepping 
> throught records (and making no changes), images in the currently displayed 
> record are occasionally replaced by images from other previously displayed 
> records.
> 
> I’ve hacked around a bit, but don’t really have any idea what could be 
> causing this behavior. It’s almost as though the system is caching the images 
> and getting them mixed up at display time. This occurs in what seems to be an 
> entirely random way. I haven’t been able to find any repeatable pattern of 
> replacements.
> 
> A particularly odd thing is that if I select and copy an incorrect image, 
> then paste it into a different datafile, the correct image is pasted in. This 
> seems to indicate some kind of disconnect between the display of images and 
> the underlying attributed text.
> 
> Here’s what I do iData Pro when parsing the NSData TextRTFD for the display 
> of a new record:
> 
>       IBOutlet NSTextView *freeformTextView; // From my 
> RecordViewController.h file. RecordViewController is a UIViewController
> 
>       NSUInteger length = [freeformTextViewString length];
> 
>        // Clear attributes displayed for the previous record
>       NSRange fullllRange = NSMakeRange(0, length);
>       [freeformTextView setTypingAttributes:nil];
>       [[freeformTextView textStorage] removeAttribute:NSLinkAttributeName 
> fullllRange];
> 
>       // Replace the text; use the RTFD version if it is available
>       NSData *textRTFD = [record textRTFD];  // from the xml datafile
>       if (textRTFD])
>               [freeformTextView replaceCharactersInRange:allRange 
> withRTFD:textRTFD];
> 
> This results in the display of the RTFD styled text with any attachments, 
> including links, images, and/or sound files. (And the preceding code has been 
> in use for over a decade with no problems.)
> 
> Here’s what I do in iData Pro-Mobile:
> 
>       // Replace the attributedText; use the RTFD version if it is available
>       NSData *textRTFD = [record textRTFD];
>       if (textRTFD)
>       {
>               NSError *error;
>               NSDictionary *dict = [NSDictionary 
> dictionaryWithObjectsAndKeys: NSRTFDTextDocumentType, 
> NSDocumentTypeDocumentAttribute, nil];
> 
>               NSAttributedString *attributedText = [[NSAttributedString 
> alloc] initWithData:textRTFD options:dict documentAttributes:NULL 
> error:&error];
> 
>               [freeformTextView setAttributedText:attributedText];
>       }
> 
> Only images are affected. Text formatting — text content, fonts, point sizes, 
> text colors — remains stable. When a datafile is transferred to the Mac and 
> opened in the Mac app, it displays as expected.
> 
> Is it obvious that I’m doing something wrong, or could this be an iOS bug?
> 
> Thanks,
> Mike Wright
> 

_______________________________________________

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

Reply via email to