虽然我的应用程序可以在没有任何互联网连接的情况下使用,但它可以与Web服务器交换数据(以显示一些用户统计信息).因此,我将该应用宣传为"无需互联网连接".一些用户随后关闭了我的应用程序的移动数据,这应该是完全正常的.但是当我的应用程序尝试交换数据时,这些用户会收到"关于[应用程序名称]关闭蜂窝数据"的警告.对话.
这对他们来说是一种烦恼,我想阻止这些对话并简单地跳过整个数据交换的事情.
但是,虽然我关闭了整个设备的WiFi和应用程序的移动数据,但Reachability确认了一个积极的互联网连接.更具体地说,它报告
Reachability Flag Status: WR t------ networkStatusForFlags
Run Code Online (Sandbox Code Playgroud)
无论我是否激活了细胞数据.当然,当蜂窝数据关闭时,实际上没有互联网连接可用,因此数据交换失败.但无论如何,用户都会看到蜂窝数据对话框.
有没有办法检测iOS 7和iOS 8上的互联网连接是否可用,考虑到特定应用程序的蜂窝数据设置 - 所有这些都不会再次通过蜂窝数据对话框窃听用户?
我的应用程序目前没有任何设置面板,所以我想避免设置(第二个应用程序内)开关"不要使用手机数据".此外,我不想将数据交换限制为WiFi连接,因为每个会话只有2 KB的数据,这对大多数用户来说并不是一件大事.
在我正在开发的应用程序中,数据库用于存储所有用户数据,通常位于库/应用程序支持中的某个位置.为了使用户能够切换数据库,我想实现类似于iTunes或iPhoto的功能,如果在启动应用程序时按下选项键,应用程序会询问库或数据库的位置.
如果没有NSEvent,如何检查当前按下的(修饰符)键?
我已经尝试过:
[NSResponder flagsChanged:(NSEvent *)theEvent] - 可能没有被调用,因为选项键在窗口之前已经关闭,并且任何响应者都被实例化了.
[[NSApplication sharedApplication] currentEvent]- 退货nil.
基于视图的NSTableViews似乎只是标准的行为,其中,为了使文本字段的表里面的第一个响应者,用户要么双击或单点击"保持冷静".
但是,考虑到基于视图的灵活性NSTableViews提供,这种行为并不总是令人满意,因为现在有许多不同的复杂应用程序可能而不仅仅是做一个"旧学校"表.
如何通过单击在基于视图的NSTableView中轻松地控制(可能在单元格中与其他控件一起)第一响应者?
使用 macOS 10.14 Mojave 中的暗模式,大多数系统颜色都是半透明的。那就是将控件颜色与窗口背景相匹配,而窗口背景又会稍微着色以匹配桌面图片。
现在,当使用重叠的 CoreAnimation 层构建视图时,事情会变得一团糟。例子:
这是一个用 CALayer 构建的自定义滑块。垂直轨道是旋钮层下方的一层。这是我设置颜色的方法:
- (void)updateColors // Called from updateLayer()
{
self.tickmarkLayer.strokeColor = [NSColor tertiaryLabelColor].CGColor;
self.tickmarkLayer.lineWidth = 1.0;
self.trackLayer.backgroundColor = [NSColor controlBackgroundColor].CGColor;
self.trackLayer.borderColor = [NSColor tertiaryLabelColor].CGColor;
self.trackLayer.borderWidth = 1.0;
self.sliderLayer.backgroundColor = [NSColor controlColor].CGColor;
}
Run Code Online (Sandbox Code Playgroud)
当然,我不希望旋钮是透明的,即轨道层不应透光。如何在保留动态色调的同时解决此问题?
理想情况下,可以访问具有当前色调且没有透明度的“有效”系统颜色。但我没有找到任何 API 来这样做。
将阴影应用于具有透明(系统)颜色的图层时会出现类似的问题。
谢谢!
cocoa ×3
macos ×2
objective-c ×2
cocoa-touch ×1
foundation ×1
ios ×1
macos-mojave ×1
nscontrol ×1
nsevent ×1
nstableview ×1
nsview ×1