Pages

Thursday, January 10, 2013

Overlapping views and touch event regions are inconsistent


I have placed 2 views (table views) within a view container that are partially overlapped, on purpose.  View A overlaps about 50% of View B.




If I move View B so they no longer overlap:



 



The screenshot on the left shows the 2 views after the move.  The screen on the right shows a blue region which represents where the original view was and where the touch events for viewB are. 



The previously overlapped region within View A does not respond to touch events, that is, ~50% does not, i.e. the overlapped portion you see in the above screen shot..  Only the region that wasn't orginally overlapped does.  In addition, within View B, the portion that is now occupying new space within the superview, does not respond to touch events, only the portion of the view that happens to occupy the old region.



The code is simple that I'm using to move the view:



       UIView* viewA = [self.childViewControllers[0] view];


    UIView* viewB = [self.childViewControllers.lastObject view];


   


    CGRect rect = main.frame;


    rect.origin.x += viewB.frame.size.width;



    [UIView animateWithDuration:0.2 animations:^{


        viewB.frame = rect;


    }];



Visually, the view moves but the touch region doesn't.



I used the new storyboard "Container View" mechanism within iOS 6 to initially place the views.



I have no idea why this is happening.  Any ideas?



Thanks.


View the original article here

0 comments:

Post a Comment