如何检测何时敲击RPSystemBroadcastPickerView

时间:2018-08-23 09:13:51

标签: ios swift replaykit rpsystembroadcastpickerview

我正在使用RPSystemBroadcastPickerView从我的应用程序开始系统范围的屏幕录像。 RPSystemBroadcastPickerView完全独立于开始录制和所有操作,我想这是有道理的-只有用户可以通过明确点击按钮来开始屏幕录制。

我需要知道何时点击RPSystemBroadcastPickerView。现在,UI正在显示键盘,我想继续显示(这是一个聊天应用程序)。但是,键盘下方显示了显示选择一个广播扩展列表的表单。见下图:

enter image description here

这有效地防止了用户开始广播。如果我知道用户何时点击RPSystemBroadcastPickerView,那时候可以手动隐藏键盘。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我没有为此找到任何回调,但是您可以创建透明按钮,将其添加到 RPSystemBroadcastPickerView 上方。当用户点击您的按钮时,您将能够隐藏键盘,然后使用以下代码将操作转移到 RPSystemBroadcastPickerView

for subview in screenSharingProviderPickerView.subviews {
    if let button = subview as? UIButton {
         button.sendActions(for: UIControlEvents.allTouchEvents)
    }
}

答案 1 :(得分:1)

我找到了与已接受答案相似的解决方案,但您无需创建透明按钮。
我只是将其他目标操作对添加到选择器按钮分配表中,当按下按钮时将触发#selector

/// picker is an instance of RPSystemBroadcastPickerView
for subviews in picker.subviews {
    if let button = subviews as? UIButton {
        button.addTarget(self, action: #selector(pickerAction), for: .touchUpInside)
    }
}

/// You can also accept _ sender: UIButton as parameter, if you need to.
@objc func pickerAction() {
    /// called when user press on RPSystemBroadcastPickerView
}

注意:请记住,如果Apple将来更改此视图的层次结构,则可能还需要更新应用程序。