我正在使用RPSystemBroadcastPickerView从我的应用程序启动一个全系统的屏幕记录。RPSystemBroadcastPickerView在启动录音和一切方面完全自主,我认为只有用户才能通过显式点击按钮启动屏幕记录。
我需要知道RPSystemBroadcastPickerView何时被窃听。现在UI正在显示键盘,我想继续显示(这是一个聊天应用程序)。然而,显示广播扩展以选择一个的列表的表单显示在键盘下面。见以下图片:

这有效地防止了用户启动广播。如果我知道何时用户点击RPSystemBroadcastPickerView,我可以手动隐藏键盘在那一刻。有什么建议吗?
发布于 2018-10-14 15:08:27
我没有为此找到任何回调,但是您可以创建透明按钮,将其添加到RPSystemBroadcastPickerView.之上。当用户点击您的按钮时,您将能够隐藏键盘,而不是使用以下代码将操作转移到RPSystemBroadcastPickerView:
for subview in screenSharingProviderPickerView.subviews {
if let button = subview as? UIButton {
button.sendActions(for: UIControlEvents.allTouchEvents)
}
}发布于 2020-09-02 11:56:16
我找到了与接受答案类似的解决方案,但您不需要创建透明按钮。
我只是在选择按钮分派表中添加额外的目标-动作对,当按下按钮时,#selector将被触发。
// picker is an instance of RPSystemBroadcastPickerView
for subview in picker.subviews {
if let button = subview 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将来更改此视图的层次结构,您可能也需要更新应用程序。
https://stackoverflow.com/questions/51982235
复制相似问题