Подтвердить что ты не робот

Как получить позицию объекта в UIView, в UIScrollView

так что скажем, что у меня есть UIScrollView, внутри него есть 3 UIViews, внутри которых есть UISlider в каждом из них. они позиционируются вертикально в UIScrollView.

Теперь у меня есть 4-й UIView в UIScrollView, который я хочу перемещать в зависимости от положения ползунка, который был использован.

поэтому в моем методе sliderChanged, который я передаю отправителю, я получаю положение ползунка и настраиваю положение четвертого UIWindow на его y. Это отлично работает на первом UIView, но один раз на другом UIView, который заставил меня прокручивать вниз, использование слайдера перемещает 4-й UIView, но остается в начале UIScrollView

Я использую:

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

мне нужно получить положение ползунка относительно содержимого scrollView, а не относиться к его UIView, чтобы я мог снова установить 4-й вид относительно содержимого прокрутки.

4b9b3361

Ответ 1

Вы можете конвертировать точки с помощью методов экземпляра UIView.

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

Например, я хочу преобразовать ponint в viewA в координаты scrollViewB.

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

Или, я хочу знать положение viewA в scrollViewB.

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

Ответ 2

Используя предыдущий ответ, я принял его немного дальше, чтобы решить вопрос, который у меня был.

Если у вас несколько UITextView внутри нескольких UIView внутри внутри одного UIScrollView: это будет оживлять и прокручивать их.

Это также можно применить и к 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 на эту сумму.