我正在使用RPSystemBroadcastPickerView
从我的应用程序开始系统范围的屏幕录像。 RPSystemBroadcastPickerView
完全独立于开始录制和所有操作,我想这是有道理的-只有用户可以通过明确点击按钮来开始屏幕录制。
我需要知道何时点击RPSystemBroadcastPickerView
。现在,UI正在显示键盘,我想继续显示(这是一个聊天应用程序)。但是,键盘下方显示了显示选择一个广播扩展列表的表单。见下图:
这有效地防止了用户开始广播。如果我知道用户何时点击RPSystemBroadcastPickerView
,那时候可以手动隐藏键盘。有什么建议吗?
答案 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将来更改此视图的层次结构,则可能还需要更新应用程序。