0

简短版本:我有一个使用 UISegmentedControl 的工作解决方案,但我不喜欢它的外观。当我使用 Safari 时,当它位于输入字段列表的开头或结尾时,它会“变暗”上一个或下一个。我无法说服 UISegmentedControl 这样做,那么他们是怎么做到的呢?

长版:我有一个 UITableView,其中包含具有文本字段的单元格。文本字段采用数字输入(通常是浮点数)。这意味着我使用keyboardType = UIKeyboardTypeDecimalPad 呈现键盘。这也意味着没有返回按钮,所以我需要一种在单元格之间移动的好方法,而不是触摸单元格。我想像 iOS Safari 那样做——用一个小工具栏写着“上一个 | 下一个……完成”。

我有代码可以完成所有这些工作(将 textField.inputAccessoryView 设置为具有适当按钮的 UIToolbar 的实例),将 UISegmentedControl 用于上一个和下一个按钮。我有这样的工作,以便下一个移动到下一个单元格,前一个移动到上一个单元格。

那我为什么会在这里?我无法让 iOS Safari 中看到的变暗的上一个/下一个行为与 UISegmentedController 一起使用,如果我不需要的话,我真的不想自己实现所有这些(那时,我的 CCB 将调用一个它用于拒绝更改的两条规则中的一条: 规则 1)如果我认为这不是一个好主意,那么我不会实施它;规则 2)如果这很容易,我可能会这样做)。

(我会张贴图片,但我对 SO 太陌生了 - 抱歉)

当我尝试做同样的事情时,它看起来和行为就像一个 Safari 中间文本字段,但我似乎无法让它看起来像第一个或最后一个文本字段的 Safari 版本。

我尝试过启用、选择甚至更改条形背景颜色,但它们似乎都不起作用。背景颜色似乎最接近,但我必须根据第一个、最后一个或中间的时间来使用 3 个不同的工具栏,即使这样也不是很好。

4

1 回答 1

2

解决了。问题是在 IB 中设置的各个段的“启用”设置不会使其成为可执行文件。我必须以编程方式禁用视图控制器中的上一个或下一个段。一旦我这样做了,它现在就如我所愿。

当我在 IB 中设置 UISegmentedControl 时,我将一个段设置为启用,另一个设置为禁用(== 未启用)。在调试器中,我开始浏览各个段的设置,发现实际上将段设置为禁用可以使其以我想要的方式工作。

例如,在包含附加到“nextControl”的 UISegmentedControl 的“nextToolbar”中,只有“下一步”按钮应显示为活动状态。这意味着我必须将上一个按钮设置为禁用。Previous 按钮位于索引 0,因此禁用它意味着在使用它之前在某处执行此操作(我将其放在 viewDidLoad 中:):

[self.nextControl setEnabled:NO forSegmentAtIndex:0]

同样,对于 prevControl,只有“上一个”按钮应该处于活动状态,我使用:

[self.previousControl setEnabled:NO forSegmentAtIndex:1]
于 2012-05-31T01:46:47.967 回答