滚动视图受影响时在屏幕上移动控件

时间:2012-12-02 20:58:13

标签: ios uibutton scrollview move fixed

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

enter image description here

这张照片显示了我想要做的事情。因此,有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个矩形(NOT BOLD ONES)和第一个uitextivew向上移动。我这样做是因为键盘在我输入数据时隐藏了第二个uitextview。但现在UIBUTTONS(BOLDED Rectangles)仍留在屏幕上。当我隐藏键盘时,应用程序屏幕是正常的。如何使粗体矩形也随着未加粗的矩形向上移动。

    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];

编辑:解决方案。我添加了我自定义创建的toggleButtons(BOLDED矩形),就像你在这里看到的那样,并将它们添加到我的scrollView中。因此,当键盘显示时,滚动视图向上移动,所有我的控件(粗体和非粗体)都会向上移动。这是一个简单的解决方案。

1 个答案:

答案 0 :(得分:0)

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

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

底线,听起来问题不是您用于添加粗体控件的CGRect坐标,而是您将其添加为子视图的视图。我们可以尝试通过滚动视图来动画同步动画各种“非移动”控件的变化坐标,但这会有点笨拙,最好只将它们全部放在同一个子视图中。