Post

Replies

Boosts

Views

Activity

Reply to iOS13 Wrong UIPasteboard.general.changeCount after UITextField becomes first responder
I've opened a TSI for this and I got a solution:When adding content on the pasteboard, beside the standard content type, (string, image, etc), also add a custom presentation type so you can check on it later.let myContentKey = "myContent"UIPasteboard.general.items = [[kUTTypeUTF8PlainText as String: someString, myContentKey: 1]]And then, when pasting, do like this:if (lastKnownGeneralPasteboardChangeCount != UIPasteboard.general.changeCount) && !UIPasteboard.general.contains(pasteboardTypes: [myContentKey]){ // we'll be using this fresh content from the general pasteboard //.....}else{ // use app local pasteboard content, cause general pasteboard contains my own items //.....}
Dec ’19
Reply to Console app not showing info and debug logs
Is Apple able to fix this or should we start rolling our own solutions? I'm reading the logs of my app running on iPad(iOS 14.4), using the Console on MacOS (10.15.7), and not getting all the logs. Some times I get some logs, and some times I get not logs at all (from my app). I need the logs that are generated when the app is started by the system, so I can't debug it using Xcode. I read the whole thread plus the docs, implemented the new unified logging, but no luck. I even get fewer messages with the new shiny architecture, than if I use NSLog.
Jun ’21
Reply to iPadOS 15, cannot replace/destroy foreground scene, and activate an existing background scene.
Is there any UIKit engineer knowing how how to handle multiple scenes, or is it dark magic? The Apple iOS apps, Pages for instance, handle multiple scene in a elegant way, whereas my app, using the same Activate/Destroy API, looks bad. Replacing current scene with another scene: Open doc A in scene A, then open another scene B, and open the same A doc. Pages simply shows the former scene, and the latter one disappears. I succeeded to make my app work on iOS 15, but it works in an unyielding manner, as I described above: The current scene B is shrinked to half screen, then the target one, A, is activated on the other half of the screen, then B scene is destroyed, and finally scene A is enlarged on the whole screen. Opening a document from Spotlight, that's already open in one of the existing scenes, does not activate that particular scene. Instead, it activates the last used scene, EVEN if there is another scene that has that doc already open. (I do set 'prefersToActivateForTargetContentIdentifierPredicate', but no luck). On Apple Pages, it activates the correct scene.
Sep ’21
Reply to Xcode crash when upload to app connect
It even crashes in the release version. Translated Report (Full Report Below) ------------------------------------- Process: Xcode [2147] Path: /Applications/Xcode.app/Contents/MacOS/Xcode Identifier: com.apple.dt.Xcode Version: 15.0 (22265) Build Info: IDEApplication-22265000000000000~3 (15A240d) Code Type: ARM-64 (Native) Parent Process: launchd [1] User ID: 501 Date/Time: 2023-09-24 11:08:28.8476 +0300 OS Version: macOS 13.5.2 (22G91) Report Version: 12 Anonymous UUID: AC134C1E-4270-BC50-46BA-0FC5F300594C Time Awake Since Boot: 590 seconds System Integrity Protection: enabled Crashed Thread: 0 Dispatch queue: archive info plist lock Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Termination Reason: Namespace SIGNAL, Code 6 Abort trap: 6 Terminating Process: Xcode [2147] Application Specific Information: abort() called com.apple.main-thread Application Specific Signatures: NSInvalidArgumentException Application Specific Backtrace 0: 0 CoreFoundation 0x00000001a3543154 __exceptionPreprocess + 176 1 DVTFoundation 0x0000000102713e30 DVTFailureHintExceptionPreprocessor + 388 2 libobjc.A.dylib 0x00000001a30624d4 objc_exception_throw + 60 3 CoreFoundation 0x00000001a362d9b8 -[__NSCFString characterAtIndex:].cold.1 + 0 4 CoreFoundation 0x00000001a363ac10 -[__NSPlaceholderDictionary initWithCapacity:].cold.1 + 0 5 CoreFoundation 0x00000001a3456ae0 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 320 6 CoreFoundation 0x00000001a3456974 +[NSDictionary dictionaryWithObjects:forKeys:count:] + 52 7 IDEFoundation 0x0000000108a55ac8 -[IDEArchiveDistributionRecord dictionaryRepresentation] + 296 8 IDEFoundation 0x0000000108a37180 __31-[IDEArchive setDistributions:]_block_invoke + 16 9 DVTFoundation 0x000000010270bb2c -[NSArray(DVTFoundationClassAdditions) dvt_arrayByApplyingBlock:] + 224 10 IDEFoundation 0x0000000108a37110 -[IDEArchive setDistributions:] + 84 11 Foundation 0x00000001a440ad94 -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:maybeNewValuesDict:usingBlock:] + 604 12 Foundation 0x00000001a4434f00 -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] + 64 13 Foundation 0x00000001a444e42c _NSSetObjectValueAndNotify + 284 14 IDEFoundation 0x0000000108a36f08 __36-[IDEArchive addDistribution:error:]_block_invoke + 156 15 libdispatch.dylib 0x00000001a323c400 _dispatch_client_callout + 20 16 libdispatch.dylib 0x00000001a324b97c _dispatch_lane_barrier_sync_invoke_and_complete + 56 17 DVTFoundation 0x0000000102758014 DVTDispatchBarrierSync + 148 18 DVTFoundation 0x00000001027342b4 -[DVTDispatchLock performLockedBlock:] + 60 19 IDEFoundation 0x0000000108a36d30 -[IDEArchive addDistribution:error:] + 200 20 IDEFoundation 0x00000001086dc2f0 __35-[IDEDistributionUploadStep upload]_block_invoke.115 + 116 21 DVTFoundation 0x0000000102757330 __DVT_CALLING_CLIENT_BLOCK__ + 16 22 DVTFoundation 0x0000000102757b08 __DVTSyncPerformBlock_block_invoke + 68 23 CoreFoundation 0x00000001a34ca1d4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 28 24 CoreFoundation 0x00000001a34ca0e8 __CFRunLoopDoBlocks + 364 25 CoreFoundation 0x00000001a34c958c __CFRunLoopRun + 2432 26 CoreFoundation 0x00000001a34c84b8 CFRunLoopRunSpecific + 612 27 HIToolbox 0x00000001acd1adf0 RunCurrentEventLoopInMode + 292 28 HIToolbox 0x00000001acd1ac2c ReceiveNextEventCommon + 648 29 HIToolbox 0x00000001acd1a984 _BlockUntilNextEventMatchingListInModeWithFilter + 76 30 AppKit 0x00000001a66ef97c _DPSNextEvent + 636 31 AppKit 0x00000001a66eeb18 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 716 32 DVTKit 0x0000000102fd8a9c -[DVTApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 300 33 AppKit 0x00000001a66e2f7c -[NSApplication run] + 464 34 DVTKit 0x0000000102fd7cbc -[DVTApplication run] + 60 35 AppKit 0x00000001a66ba3cc NSApplicationMain + 880 36 dyld 0x00000001a3093f28 start + 2236 Application Specific Backtrace 1: 0 CoreFoundation 0x00000001a3543154 __exceptionPreprocess + 176 1 DVTFoundation 0x0000000102713e30 DVTFailureHintExceptionPreprocessor + 388 2 libobjc.A.dylib 0x00000001a30624d4 objc_exception_throw + 60 3 CoreFoundation 0x00000001a362d9b8 -[__NSCFString characterAtIndex:].cold.1 + 0 4 CoreFoundation 0x00000001a363ac10 -[__NSPlaceholderDictionary initWithCapacity:].cold.1 + 0 5 CoreFoundation 0x00000001a3456ae0 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 320 6 CoreFoundation 0x00000001a3456974 +[NSDictionary dictionaryWithObjects:forKeys:count:] + 52 7 IDEFoundation 0x0000000108a55ac8 -[IDEArchiveDistributionRecord dictionaryRepresentation] + 296 8 IDEFoundation 0x0000000108a37180 __31-[IDEArchive setDistributions:]_block_invoke + 16 9 DVTFoundation 0x000000010270bb2c -[NSArray(DVTFoundationClassAdditions) dvt_arrayByApplyingBlock:] + 224 10 IDEFoundation 0x0000000108a37110 -[IDEArchive setDistributions:] + 84 11 Foundation 0x00000001a440ad94 -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:maybeNewValuesDict:usingBlock:] + 604 12 Foundation 0x00000001a4434f00 -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] + 64 13 Foundation 0x00000001a444e42c _NSSetObjectValueAndNotify + 284 14 IDEFoundation 0x0000000108a36f08 __36-[IDEArchive addDistribution:error:]_block_invoke + 156 15 libdispatch.dylib 0x00000001a323c400 _dispatch_client_callout + 20
Sep ’23