【问题标题】:Prevent UISegmentedControl from sending action method automatically防止 UISegmentedControl 自动发送动作方法
【发布时间】:2024-01-16 08:24:01
【问题描述】:

我正在为 tvOS 编写应用程序,并且正在使用 UISegmentedControl。我的问题是,当我滚动浏览项目时,只要我在一个项目上停留一两秒钟,它就会发送它的操作方法。我想禁用此行为,而仅在用户单击该操作时才触发该操作。 有人知道怎么做吗?

【问题讨论】:

  • UISegmentedContol 上的文档和Segmented controls in general 上的文档均未提及此类内容。你有什么不寻常的逻辑吗?涉及哪些版本?
  • 没什么异常。 PrimaryAction 在 IB 中设置。刚刚在最新的 tvOS 中测试。

标签: uikit tvos


【解决方案1】:

我的 tvOS 应用遇到了同样的问题,并通过以下方式解决:

@IBOutlet weak var searchSegmentedControl: UISegmentedControl!

override func viewDidLoad() {
    let tap = UITapGestureRecognizer(target: self, action: #selector(didClickSegmentedSearchButton))
    tap.numberOfTapsRequired = 1
    view.addGestureRecognizer(tap)
}

func didClickSegmentedSearchButton() {
    switch searchSegmentedControl.selectedSegmentIndex {
    case 0:
        // Restaurant
    case 1:
        // Hotel
    case 2:
        // Attraction
    case 3:
        // Shopping
    default:
        // Unknown
    }
}

【讨论】: