iPhone:inputAccessoryView 上的上一个/下一个按钮的透明度不同

Posted

技术标签:

【中文标题】iPhone:inputAccessoryView 上的上一个/下一个按钮的透明度不同【英文标题】:iPhone: varying transparency of previous/next button on inputAccessoryView 【发布时间】:2012-05-26 19:59:56 【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

[self.nextControl setEnabled:NO forSegmentAtIndex:0]

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

[self.previousControl setEnabled:NO forSegmentAtIndex:1]

【讨论】:

以上是关于iPhone:inputAccessoryView 上的上一个/下一个按钮的透明度不同的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:inputAccessoryView 上的上一个/下一个按钮的透明度不同

以编程方式在iPhone键盘顶部移动工具栏

inputAccessoryView 没有被移除

即使连接了硬件键盘,也会显示iPhone软键盘

没有为 UITextField 正确添加 inputAccessoryView

inputAccessoryView 现在是只读的吗?