4

我正在使用RPSystemBroadcastPickerView从我的应用程序开始系统范围的屏幕录制。开始录制和一切都是完全自主的RPSystemBroadcastPickerView,我想这是有道理的——只有用户可以通过明确点击按钮来开始屏幕录制。

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

在此处输入图像描述

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

4

2 回答 2

3

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

for subview in screenSharingProviderPickerView.subviews {
    if let button = subview as? UIButton {
         button.sendActions(for: UIControlEvents.allTouchEvents)
    }
}
于 2018-10-14T15:08:27.237 回答
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 将来更改此视图的层次结构,您可能还需要更新应用程序。

于 2020-09-02T11:56:16.787 回答