Comments (23)
@svenoaks That's what I was thinking too. I will give it a go, and see if can be made to work.
from lnpopupui.
Implemented in 1.2.12
from lnpopupui.
Hello, can you please explain further what you are looking to do? This library uses my LNPopupFramewotk under the hood, which might have a solution. I just need to think how to integrate it with LNPopupUI.
from lnpopupui.
If I understand correctly, this is what would be useful in LNPopupController:
Now the question is, how to design the SwiftUI API.
from lnpopupui.
Hello @LeoNatan ,
I don't think so.
@svenoaks would like to be able to limit the draggable area when the popup is open.
So I think he must be able to answer at:
gestureRecognizerShouldBegin(_:)
from lnpopupui.
It's possible to add a view and designate that for popup interaction. That sounds much more convenient to me than doing calculation in the gesture recognizer delegate.
from lnpopupui.
Hi, yes it would something like designate a view in the popup as the only one for interaction. As a workaround, I was trying to block the dragging from happening by adding highPriorityGestures
to some views in the popup, but without success.
I have attached a screenshot of exactly what I mean.
from lnpopupui.
Suggestions for SwiftUI API are welcome.
from lnpopupui.
As an iOS noob, I'm not sure how possible or convenient it is, but could it just as simple as a View modifier that we place on one of the children of the popup? Like .popupInteractionView(
)
from lnpopupui.
Just make sure to read the note in the API header. You should set the interaction container to be a view that is at the back of the hierarchy, to prevent issues with blocking views underneath.
from lnpopupui.
Hi, thanks for doing it so quick. I can't get it to work though, it seems to either stop the interaction in the popup completely or not limit it at all depending on where I put the .popupInteractionContainer()
For example, here the entire popup is still able to be interacted with.
from lnpopupui.
Please provide a small demo project where it fails. It could be a limitation of the background modifier in SwiftUI, and so you might need to move the popup interaction container to the bottom or top of the call.
from lnpopupui.
The link above is the LNPopupUI demo app with it added
from lnpopupui.
I’ll try to see what’s going on soon.
from lnpopupui.
Hi, any progress on this? 🙏
from lnpopupui.
Sorry, not yet. Will look soon.
from lnpopupui.
Please test now. After my fix in 1.2.13, your example code behaves as expected.
from lnpopupui.
Thank you for continuing to work on this, I know you are probably busy with other things. If you wanted some compensation for your time for continuing to perfect this feature and also #8 you can email me at the email in my profile, let me know what your hourly rate would be.
A couple things I noticed:
-
In the demo app I added a ScrollView to the player, when the ScrollView is at the top, the popup will be dragged back to the collapsed state, even though the popupInteractionContainer() on the View at the top of the screen should prevent this from happening.
-
When popupInteractionContainer() is used, the popupBar no longer responds to dragging (except on the very bottom of it for some reason, possibly it's receiving gestures from the popupInteractionContainer below it). I feel like most use cases that use popupInteractionContainer() would still want the popupBar to be draggable.
from lnpopupui.
Edited the above demo app so the popupInteractionContainer() is no longer within the ScrollView to make the intention more clear.
from lnpopupui.
Regarding 1, I will not make a change. Scroll views are meant to interact with the framework. If your interaction view is inside a scroll view, it will not work as expected with the current implementation. It's a limitation with SwiftUI. Maybe will look to improve this in the future.
2 sounds like a bug. Does it reproduce in the above linked project?
from lnpopupui.
Regarding 1, I will not make a change. Scroll views are meant to interact with the framework. If your interaction view is inside a scroll view, it will not work as expected with the current implementation. It's a limitation with SwiftUI. Maybe will look to improve this in the future.
2 sounds like a bug. Does it reproduce in the above linked project?
In 1, the interaction view is not inside the ScrollView, the ScrollView is below the interaction view in the VStack. Not sure if it makes a difference for what you're saying about the limitation with SwiftUI, but wanted to point that out.
Yes 2, is happening with the demo app linked above.
from lnpopupui.
I changed the implementation recently so that the view is just a hint for the system where to limit the interaction area. The gesture recognizer is not actually added to that view. The reason is that in some cases the system does not send the gestures to the interaction view. So right now, I calculate where the interaction view's frame is in relation to the topmost content view, and limit interaction to that view only. You can see why this approach wouldn't work if the interaction view is in a scroll view.
Will take a look soon.
from lnpopupui.
2 should be fixed with latest LNPopupController.
from lnpopupui.
Related Issues (20)
- Change color of now playing bar background HOT 5
- popup bar and popup content can get stuck in wrong position when dismissing a modal sheet with the keyboard in a transitory state HOT 20
- iOS 15.2 has broken safe area insets under some conditions HOT 1
- LNPopupController: The popup controller is already in transition. Will ignore this transition request. HOT 2
- Using a custom view for the popup bar breaks presentation/dismiss animations HOT 4
- Run the example project HOT 1
- How to cooperate with withAnimation(...) when switching PopupOpen HOT 1
- After adding .popupBarStyle(.prominent) or .popupBarProgressViewStyle(.top) or .popupBarMarqueeScrollEnabled(true) to the View hierarchy, iOS keyboard will resign after single keypress HOT 3
- Possible regression between 1.4.0 and 1.4.1 in popupBarItems HOT 4
- Can't build test target while using LNPopupUI HOT 5
- Gesture Conflict HOT 3
- Interaction Style issues HOT 5
- State management breaks on quick opening/closing of the popup HOT 10
- Popover's background Scale Effect HOT 1
- Making isBarPresented = true, while its animating closed when set to false causes the popup to become bugged until open/closed again HOT 12
- Make popup image nullable
- Updating popup content while popup is closing causes popup to get stuck in a loop of closing and opening endlessly. HOT 6
- popupBarCustomView produces too much padding HOT 2
- Unable to change text attributes in .popupBarCustomizer HOT 13
- Title Marquee Seems Broken HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lnpopupui.