0

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

在此处输入图像描述

这张照片显示了我正在尝试做的事情。所以有 4 个 UIbuttons 附加到屏幕上。我通过制作这样的 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 (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];

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

4

1 回答 1

0

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

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

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

于 2012-12-03T03:12:54.827 回答