Open alexookah opened 2 years ago
Added a MR to remove the async delay for unSwizzle methods https://github.com/Juanpe/SkeletonView/pull/491
I was thinking, maybe the async+delay should also be removed from the swizzle methods in case the hideSkeletonView is run immediately after showSkeletonView
Hello, I have a sample to reproduce the issue here: https://github.com/Juanpe/SkeletonView/issues/495 Unfortunately looks like swizzling by itself breaks the internal logic of UIKit
When Skeleton is active and you try to show a floating keyboard it will produce infinite loop.
In order to avoid this and you want to show keyboard do it after stopping the skeleton Animation with a delay 0.02 seconds. (work-around)
I know that it produce an infinite loop, that's why I've opened the issue :) Unfortunately, yours workaround it's not a workaround, I have a modular app, some part of the screen still loading but another one it ready for the interaction. Why one part should block another one? That's the main reason why we all should avoid swizzling in production
Hello, I happened to have another infinite loop issue with swizzle methods. I remember I had fixed this in the past with adding the unSwizzle methods. https://github.com/Juanpe/SkeletonView/pull/381
In order to fix my new issue which was trying to show a floatingKeyboard right after hidingSkeletonView. I think that the unSwizzle method occurs too late.
The swizzle delay 0.01 maybe makes sense to me but not the unSwizzle delay. Also does unSwizzle really need to be in async method?
https://github.com/Juanpe/SkeletonView/blob/main/SkeletonViewCore/Sources/Internal/UIKitExtensions/UIView%2BSwizzling.swift#L44
When receiving the notification with skeletonDidDisappear the swizzle methods are still active (due to the delay 0.01). It should be triggerred after the unswizzle are completed. The
sk.isSkeletonActive
should return false only when the unSwizzle method is disabled in my opinion.Should I make a MR that removes the delay for unSwizzle methods?
I was also thinking about some delegate about the didDisappear or some callback that runs after the unswizzle is triggered. Do you like that idea?