iPhone:在inputAccessoryView上改变上一个/下一个按钮的透明度

时间:2012-05-26 19:59:56

标签: iphone uitextfield uitoolbar uisegmentedcontrol

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

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

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

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

(我会张贴照片,但我太新了 - 对不起)

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

我尝试过启用,选择,甚至更改条形背景颜色,但它们似乎都没有效果。背景颜色似乎最接近,但我必须有3个不同的工具栏,基于它的第一个,最后一个或中间的时间,即便如此也不是很好。

1 个答案:

答案 0 :(得分:2)

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

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

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

[self.nextControl setEnabled:NO forSegmentAtIndex:0]

同样,对于prevControl,只有Previous按钮应该是活动的,我使用:

[self.previousControl setEnabled:NO forSegmentAtIndex:1]