对于 iPhone – 但不是 iOS 模拟器 – UIToolbar 的 UIBarButtonItems 只会在长按时突出显示,而不是在点击时突出显示

For iPhone – but not iOS Simulator – UIToolbar's UIBarButtonItems will highlight only on long press, rather than on tap

我有一个 iPhone 5s 运行 iOS 10.3.1。在新的 UIViewController 中,我设置 self.toolbarItems 如下:

self.toolbarItems = [
  UIBarButtonItem(title: "Hi", style: .plain, target: self, action: #selector(sayHi)),
  UIBarButtonItem(barButtonSystemItem: .refresh, target: self, action: #selector(redoIt))
]

在 iOS 模拟器上,单击其中任何一个都会立即使 barButtonItem 突出显示。但是,在我的 iPhone 上,按钮只会在执行长按(可能半秒长)时突出显示;单击会激活按钮的操作,但不会突出显示它。这是预期的行为吗?

是的,这是预期的 UIBarButtonItem 行为。您可以在默认的苹果应用程序中尝试不同的栏按钮,如联系人、照片等。您会看到相同的行为,您必须按住它一点才能看到突出显示的状态。

如果你真的想要它,你必须做一个自定义实现。 看看 UIControlEvents