当我在 iOS Safari 中长按 React 应用程序上的工具栏按钮时,它会选择图标。我用工具栏上的 CSS 禁用了它:
-webkit-touch-callout: none;
-webkit-user-select: none;
user-select: none;
Run Code Online (Sandbox Code Playgroud)
但随后 Safari 会继续选择它能找到的下一个愚蠢元素。
因此,我最终将样式应用到应用程序的根目录,但现在用户当然无法选择段落等内容中的任何文本。
我真正想要的是一种设置屏障的方法,上面写着“Safari,你能停止尝试选择你可能找到的下一个东西吗?”
因此,在我的工具栏组件上,我执行了此操作并验证了它被调用:
onTouchStart={e => {
e.stopPropagation();
e.preventDefault();
e.bubbles = false;
}}
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个:
onTouchStartCapture={e => {
e.stopPropagation();
e.preventDefault();
e.bubbles = false;
}}
Run Code Online (Sandbox Code Playgroud)
onSelect与,相同onSelectCapture。
然而,Safari 会忽略所有这些,并继续选择层次结构中的内容,一直到根 DIV,直到找到无意义的内容可供选择。当我通过复制查看它选择的内容时,它只是一个空格。
我缺少什么?我是否真的必须应用user-select: none;到根目录,然后选择性地允许在有意义的地方进行选择,例如包含文本的 DIV?那么,长按工具栏时,Safari 怎么会找不到并选择它呢?
我有一个 motu UltraLite mk4 USB 音频接口连接到运行 MacOS 10.13.3 的 Mac。
我正在尝试播放三个立体声文件,每个文件都有自己的立体声扬声器。
为了降低复杂性,我只是试图让一个 AVAudioPlayerNode 的立体声从默认输出通道 0 和 1 以外的东西中出来。
我希望通过 AVAudioEngine + 一些低级别的 Core Audio 来实现这一点。
到目前为止,通过配置 AVAudioEngine 的输出节点,我已经成功地将音频播放到我的 USB 音频接口:
AudioUnit audioUnit = [[self.avAudioEngine outputNode] audioUnit];
OSStatus error = AudioUnitSetProperty(audioUnit,
kAudioOutputUnitProperty_CurrentDevice,
kAudioUnitScope_Global,
0,
&deviceID,
sizeof(deviceID));
if (error) {
NSLog(@"Failed to set desired output audio device: %d", (int)
}
Run Code Online (Sandbox Code Playgroud)
我还成功地设置了一个通道映射,它允许一个播放器将立体声文件播放到我的 USB 音频接口的 4+5 通道,如 Apple 开发论坛中的 theanalogkid 所述。
通道映射的问题在于它全局应用于 AVAudioEngine 的输出,并且会影响所有 AVAudioPlayerNode。所以这不是解决方案。
因此,我没有在 AVAudioEngine 的 outputNode …
audio core-audio avfoundation avaudioengine avaudioplayernode