Ios 当滚动视图受到影响时,移动屏幕上的控件

Ios 当滚动视图受到影响时,移动屏幕上的控件,ios,uibutton,scrollview,move,fixed,Ios,Uibutton,Scrollview,Move,Fixed,我正在开发一个应用程序。我有一个屏幕,上面有大约15个控件。按钮、UITextfields、Mapkit和UITextView。文本视图位于屏幕底部。因此,当我点击输入一个值时,我会有一个滚动视图,可以像我所希望的那样向上移动控件。现在我有5个控件(自定义按钮),我将它们放置在屏幕上特定的x、y位置。它们会粘在屏幕上。当我进入textview时,所有控件都会向上移动,但这些控件不会向上移动,因为它们被赋予了特殊的x、y位置。我也想让他们也动起来。我该怎么做?我在想做一些数学运算,当每个控件移动时

我正在开发一个应用程序。我有一个屏幕,上面有大约15个控件。按钮、UITextfields、Mapkit和UITextView。文本视图位于屏幕底部。因此,当我点击输入一个值时,我会有一个滚动视图,可以像我所希望的那样向上移动控件。现在我有5个控件(自定义按钮),我将它们放置在屏幕上特定的x、y位置。它们会粘在屏幕上。当我进入textview时,所有控件都会向上移动,但这些控件不会向上移动,因为它们被赋予了特殊的x、y位置。我也想让他们也动起来。我该怎么做?我在想做一些数学运算,当每个控件移动时,它们也会移动一个特定的“增量”。或者,滚动视图是否有任何简单的方法来告诉用户,选择这些“固定按钮”并像其他控件一样向上移动它们。我说得通吗?如果你需要更多信息,请询问。谢谢

这张图片显示了我正在尝试做什么。因此,屏幕上有4个UI按钮。我通过制作这样的CGRect使它们固定在屏幕上

CGRectMake(20, 72, 180, 43)
CGRectMake(200, 72, 180, 43)
CGRectMake(380, 72, 180, 43)

CGRectMake(90, 380, 180, 43)
粗体的矩形是我通过将它们固定在这些坐标上而制作的。因此,我单击第二个Uitextview,一个委托被激发,并向上移动所有控件。这包括3个矩形(不是粗体的)和第一个向上移动的uitextivew。我这样做是因为当我向其中输入数据时,键盘隐藏了第二个uitextview。但现在,UIBUTTONS(粗体矩形)仍保留在屏幕上。当我隐藏键盘时,应用程序屏幕正常。如何使粗体矩形与非粗体矩形一起向上移动

    ITMToggleButtonView *aOnToggleButton = [[ITMToggleButtonView alloc] initWithFrame:CGRectMake(495, 21, 80, 43)
                                                                           andIndex:3
                                                                           andTitle:@"Add On?"
                                                                           andState:NO];
aOnToggleButton.delegate = self;
…创建了其他4个自定义切换按钮

[self.scrollView addSubview:stToggleButton];
[self.scrollView addSubview:rdToggleButton];
[self.scrollView addSubview:ecToggleButton];
[self.scrollView addSubview:aOnToggleButton];
[self.scrollView addSubview:sCToggleButton];

编辑:解决方案。我添加了自定义创建的切换按钮(粗体矩形),如您所见,并将它们添加到我的滚动视图中。所以当键盘显示时,scrollview会向上移动,我的所有控件(粗体和非粗体控件)也会向上移动。这是一个简单的修复方法。

解决这个问题的最简单方法是确保所有一起滚动的控件都应该是同一子视图的子视图(在您的情况下,它听起来像是
UIScrollView
)。因此,如果显示键盘时移动的非粗体控件位于
UIScrollView
上,则应将粗体控件放置在与其他控件相同的子视图上,例如,与其他控件相同的
UIScrollView

不过,我假设有一些原因,您已经将一些控件添加到了
UIScrollView
(可能是通过编程方式添加的),而其他控件则不是(可能是通过Interface Builder添加的)。您需要解释为什么滚动视图的子视图是滚动视图,而其他视图不是滚动视图。和往常一样,共享有意义的代码片段会有所帮助。抽象地诊断这类问题几乎是不可能的


归根结底,问题似乎不是用于添加粗体控件的
CGRect
坐标,而是将它们作为子视图添加到哪个视图。我们可以尝试通过scrollview同步各种“非移动”控件的变化坐标,但这会有点笨拙,最好将它们都放在同一个子视图上。

@Rob。我添加了一个到模型的链接,并解释了场景。请看一看。谢谢,谢谢你的解释。除粗体部分外,所有控件都是scrollview的子视图。我以编程的方式创建它们,它们应该位于那个精确的位置。我从IB添加了剩余的控件。我解决了我的问题。当键盘显示并点击时,我会在子视图中循环并生成一个新的CGRect时获得粗体控件。当键盘隐藏时,我会循环并将控件移动到原始位置。我会在我的问题中添加编辑,以了解我的同事是否暂时同意这种方法。再次感谢。