如何在UIScrollView中获取UIView内的对象的位置

所以我们可以说我有一个UIScrollView,里面有3个UIViews,每个里面有一个UISlider。 它们在UIScrollView中垂直放置。

我现在在UIScrollView中也有第四个UIView,我希望根据已经使用的滑块的位置移动。

所以在我通过发件人的sliderChanged方法中,我得到了滑块的位置,并将第4个UIWindow的位置调整为y。 这对第一个UIView非常有效,但是一旦在另一个强迫我向下滚动的UIView上,使用滑块移动第四个UIView,但是停留在UIScrollView的开始处

我在用:

[4thView setCenter:CGPointMake([4thView center].x, [slider center].y+10)];

我需要的是获取相对于scrollView内容的滑块位置,而不是相对于它的UIView,这样我可以再次设置相对于scrollView内容的第四个视图。


你可以通过UIView的实例方法转换点。

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view

例如,我想将viewA上的ponint转换为scrollViewB的坐标。

CGPoint aPtInScrollView = [viewA convertPoint:aPoint toView:scrollViewB]; 

或者,我想知道viewView在scrollViewB中的位置。

 CGPoint aPosViewA = [scrollViewB convertPoint:CGPointZero fromView:viewA]; 

使用之前的答案,我花了一点时间来解决我遇到的问题。

如果在一个UIScrollView中有多个UIView的多个UITextView:这将动画并滚动到它们。

这也可以应用于UITextField。

-(void)textViewDidBeginEditing:(UITextView *)textView {
    [self.theScrollView setContentOffset:[self.theScrollView convertPoint:CGPointMake(textView.frame.origin.x, textView.frame.origin.y) fromView:textView.superview] animated:YES];
}

如果您的文字视图上方有标签,只需将x或y抵消该数量即可。

链接地址: http://www.djcxy.com/p/44259.html

上一篇: how to get the position of an object within a UIView, within a UIScrollView

下一篇: objective C touch events problem