【问题标题】:iOS toolbar sometimes highlights/selects the wrong buttoniOS 工具栏有时会突出显示/选择错误的按钮
【发布时间】:2011-09-26 06:40:54
【问题描述】:

我有一个 iOS 应用程序,在一个视图中,它在代码中创建了一个工具栏。这里没有什么花哨的;只是一堆标准的 UIBarButtonItems(用 initWithImage 初始化,每个调用一个不同的选择器),使用 UIToolbar setItems:animated(没有动画)添加到工具栏(连同分隔符)。

这在大多数情况下都可以正常工作...但有时,在转到另一个视图并多次返回此视图后,工具栏的触摸处理似乎已关闭。它突出显示并调用错误的按钮。也不总是同一个错误的按钮。有时它就在我实际点击的那个旁边,但有时它离我更远,甚至在工具栏的另一边也很清楚。

它没有模式,但如果你尝试足够长的时间(切换到另一个视图,然后再回到这个),它总是会发生。当另一个视图处于不同的屏幕方向时(由其 shouldAutorotateToInterfaceOrientation 实现强制)似乎更经常发生,但即使所有视图都具有相同的方向,它仍然不时发生。当它发生时,我的选择器会被一个与实际突出显示的按钮匹配的发送者调用,而不是我触摸的那个。所以这似乎是 iOS 中没有正确处理触摸的问题。

我的 google-fu 完全没有发现任何其他关于这个问题的报告......似乎它一定是一个 Apple 错误,因为我的代码都没有涉及工具栏触摸处理。在 iOS 4.3 下的模拟器和设备上都会发生这种情况(尚未尝试其他版本)。

还有其他人遇到过这个问题吗?关于如何避免它的任何建议?

【问题讨论】:

  • 我认为您将不得不在创建工具栏的位置发布代码。

标签: ios cocoa-touch uitoolbar highlight


【解决方案1】:

好的,我发现了问题。创建工具栏本身的不是代码;它是被调用的位置(以及调用频率!)。

这是遗留代码,我们没有注意到 create-the-toolbar 代码是从视图的 didRotateFromInterfaceOrientation 方法调用的(原因我们无法想象)。该方法被频繁调用,并且旧工具栏没有被拆除,因此它在工具栏之上创建工具栏。在那种情况下触摸处理出现问题也就不足为奇了。

删除那里的调用(并将其放入 viewDidLoad 就像人们期望的那样)解决了这个问题。很抱歉浪费了大家的时间......但也许下一个偶然发现工具栏行为的人会发现这很有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    相关资源
    最近更新 更多