Re: UICollectionView Moving
Re: UICollectionView Moving
- Subject: Re: UICollectionView Moving
- From: Luther Baker <email@hidden>
- Date: Mon, 07 Mar 2016 23:39:38 -0600
> teach your cell classes to respond to that property
Want to think about this out loud. Wondering what would 'trigger' a lookup
on the layout's layoutAttributesForItemAtIndexPath ... and where would I
store the indexPath I am dragging around.
If I were to be more literal - in my view controller, I handle the
UIGestureRecognizerState.Began event. At this point, I can get the
indexPath of the element I am about to move and if I change something on
that cell at that time, it sticks for the life of the drag without
reference to layoutAttributes. I also handle the
UIGestureRecognizerState.Changed event and again, if I retrieve the cell at
the gesture's locationInView and change things in it ... those changes
stick until I let go of the drag.
Stepping into the custom layout for a minute ... as you suggested, I am now
implementing layoutAttributesForInteractivelyMovingItemAtIndexPath ... and
that is getting invoked in response to the
updateInteractiveMovementTargetPosition call I am making as the gesture
location changes. Now, I know the collection view's methods are triggering
the layout's callbacks - but I'm not sure what would trigger me to fetch
the custom attributes you are suggesting. At a minimum, to ask the layout
for the attributes at that indexPath, I'd have to actually be tracking the
'selectedIndexPath' in which case, I could just get the cell and modify it
directly.
I guess I'm wondering how to "teach my cells classes to respond to that
property" ... Cells are reused so I'm not even sure how I'd go about
setting up and tearing down a KVO type relationship for the specific cell I
am dragging around. Maybe there is a WWDC video that digs into this? or
it's an easy explain?
Sorry for being so long-winded. I'm not sure I'm communicating my question
well. Hope you can understand my underlying question and nudge me the right
way but at any rate, thanks for your help so far. I'd love to use an
elegant, "made for CollectionView" solution ... but I don't think I'm
looking at it correctly yet. Just in general I guess, how can a change to
the layoutAttributes cause my CollectionViewDelegate and DataSources to
fetch the cell I'm dragging around and change it (or does it not require
the delegates or datasources ... ?)
Thanks,
-Luther
On Mon, Mar 7, 2016 at 2:45 PM, Luke Hiesterman <email@hidden> wrote:
> You can create your own subclass of UICollectionViewLayoutAttributes and
> add something like an “isMoving” property to that. Then teach your cell
> classes to respond to that property by changing the background color.
>
> Luke
>
> On Mar 7, 2016, at 11:44 AM, Luther Baker <email@hidden> wrote:
>
> Thanks Luke! That was it - I can drag and drop successfully now.
>
> One more question, how do I modify a property of the item I'm dragging
> around if the property is NOT currently in UICollectionViewLayoutAttributes
> ... I don't see a call to the datasource or delegate when I select the cell
> for moving ... so I'm not sure how to change the background color to "red"
> for instance.
>
> Would I have to add my own view to the superview and manually move it
> around in the dragging callbacks?
>
> Thanks!
> -Luther
>
>
> On Mon, Mar 7, 2016 at 11:59 AM, Luke Hiesterman <email@hidden>
> wrote:
>
>> I’d check your return value for this method in your layout:
>>
>> - (UICollectionViewLayoutAttributes
>> *)layoutAttributesForInteractivelyMovingItemAtIndexPath:(NSIndexPath
>> *)indexPath withTargetPosition:(CGPoint)position NS_AVAILABLE_IOS(9_0);
>>
>> Luke
>>
>> On Mar 7, 2016, at 9:55 AM, Luther Baker <email@hidden> wrote:
>>
>> I followed the directions here,
>>
>> http://nshint.io/blog/2015/07/16/uicollectionviews-now-have-easy-reordering/
>> - to add iOS9 style dragging to my UICollectionView - and it sort of
>> works.
>>
>> As described in the article, I added a long press gesture recognizer and
>> wired it in to make calls on the collection view -- but now, if I long
>> press, the element under my finger disappears. As I drag the transparent
>> image around, the other elements shift - but I can never see the element I
>> am dragging around. When I let go, there is simply a hole left where I
>> "dropped" the element.
>>
>> I do, very much, have a custom layout and I'm not sure that if, for drag,
>> I
>> need to do anything special. Do I need to calculate the frame of the item
>> I
>> am dragging around? I'm not sure what to try next except to roll my own
>> dragging. Any thoughts or things to try?
>>
>> Thanks in advance.
>> _______________________________________________
>>
>> Cocoa-dev mailing list (email@hidden)
>>
>> 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:
>>
>> This email sent to email@hidden
>>
>>
>>
>
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden