小编Bla*_*olf的帖子

JSDoc:返回对象结构

如何告诉JSDoc有关返回的对象的结构.我找到了@return {{field1: type, field2: type, ...}} description语法并试了一下:

/**
 * Returns a coordinate from a given mouse or touch event
 * @param  {TouchEvent|MouseEvent|jQuery.Event} e    
 *         A valid mouse or touch event or a jQuery event wrapping such an
 *         event. 
 * @param  {string} [type="page"]
 *         A string representing the type of location that should be
 *         returned. Can be either "page", "client" or "screen".
 * @return {{x: Number, y: Number}} 
 *         The location of the event
 */
var getEventLocation …
Run Code Online (Sandbox Code Playgroud)

javascript documentation-generation code-documentation jsdoc jsdoc3

116
推荐指数
3
解决办法
5万
查看次数

SwiftUI 中有控制器吗?

我现在正在尝试进入 SwiftUI,但正在努力解决基本问题。我今天的挣扎:我想知道 SwiftUI 中是否有类似控制器的东西?与 UI 无关的逻辑去哪儿了?

举一个具体的例子:
我有一个外部框架。当应用程序启动时,我启动该框架(现在在 AppDelegate 中)。它做了一些网络上的事情,根据结果,我展示了两个视图之一。其中之一,用户必须输入一些东西,按下 OK 按钮,我必须将输入传递回 Framework。我该怎么做?
我没有控制器或协调器,把它放在视图中(通过单例)对我来说似乎是错误的。


旁注:有趣的是,我发现的每个教程都省略了这样的内容。它们都专注于一个更多的视图和一个 ViewModel,但从不“缩小”以显示整个应用程序(除了与 NavigationLink 链接的两个视图)如何工作。如果有人能指出我解决这个问题的方法,我会非常感激。

architecture ios swift watchos swiftui

13
推荐指数
1
解决办法
2308
查看次数

在iOS上通过BTLE发送数据时的最大数据大小

我目前正在实现一个iOS应用程序,它使用CoreBluetooth在两个设备之间传输数据.例如,要将数据从中央发送到外设,我使用以下代码:

NSData *data = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:nil];
NSLog(@"Writing data of length %d", [data length]);
[peripheral writeValue:data forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
Run Code Online (Sandbox Code Playgroud)

这个工作绝对正常,但问题是我已经多次读过,因为特性一次最多可以传输20个字节.此外,当我查看Apple的BTLE示例代码时, 他们实现了一种将数据拆分为20字节块的机制.但是上面的代码打印出类似Writing data of length 124的东西- 数据在其他设备上很好地到达.

那么:为什么这个工作呢?更重要的是,我担心这会在某些时候破裂,特别是当非iOS设备发挥作用时.

data-transfer objective-c ios core-bluetooth bluetooth-lowenergy

11
推荐指数
1
解决办法
7500
查看次数

不收集数据的应用程序的隐私政策

我目前正在将一个应用程序带到 iOS 应用程序商店。这只是我在空闲时间制作的一个小应用程序。它与锻炼相关,因此该应用程序需要访问用户的位置和健康数据。然而,数据仅存储在用户设备上。我的应用程序不会将此数据发送到任何地方(除了 iCloud 同步),不需要登录,而且除了您在设置 iOS 时必须同意的内置 Apple 框架之外,我也没有实现任何跟踪框架。

\n\n

现在,应用程序商店要求我链接到隐私政策(可能是因为健康数据可能是敏感信息)。我在网上搜索了隐私政策生成器,但我能找到的所有内容似乎都假设您收集个人数据。其中包括以下声明:

\n\n
\n

我们出于各种目的收集多种不同类型的信息,以便为您提供和改进我们的服务。

\n
\n\n

或者

\n\n
\n

您的信息(包括个人数据)可能会传输到 \xe2\x80\x94 并保存在位于您所在州、省、国家或其他政府管辖区之外的 \xe2\x80\x94 计算机上,这些地方的数据保护法可能与当地的数据保护法不同。您的管辖权。

\n
\n\n

我担心这可能会让用户感到困惑,因为我在应用程序商店描述中明确声明数据未存储在我的服务器上。为了合法起见,我是否应该将其保留在保单中?或者,如果我实际上不收集个人用户数据,任何人都可以为我指明我需要在政策中包含哪些内容的正确方向吗?

\n

privacy app-store ios privacy-policy

11
推荐指数
1
解决办法
6295
查看次数

SwiftUI:动画列表中的更改而不动画内容更改

我在 SwiftUI 中有一个简单的应用程序,它显示 a List,每个项目都是 a ,VStack包含两个Text元素:

var body: some View {
    List(elements) { item in
        NavigationLink(destination: DetailView(item: item)) {
            VStack(alignment: .leading) {
                Text(item.name) 
                Text(self.distanceString(for: item.distance))
            }
        }
    }
    .animation(.default)
}
Run Code Online (Sandbox Code Playgroud)

.animate()之所以在那里,是因为我想在elements数组更改时对列表的更改进行动画处理。不幸的是,SwiftUI 还会对内容的任何更改进行动画处理,从而导致奇怪的行为。例如,Text每个项目中的第二个更新非常频繁,现在更新将...在更新到新内容之前很快显示被截断的标签(在末尾)。

那么如何在更新列表内容时防止这种奇怪的行为,但在列表中的元素发生变化时保持动画呢?

如果相关,我正在创建一个 watchOS 应用程序。

swift watchos swiftui swiftui-list

11
推荐指数
2
解决办法
7425
查看次数

检测关闭按钮单击NSUserNotification

我在OS X上显示一个本地NSUserNotification,代码如下:

NSUserNotification *notification = [[NSUserNotification alloc] init];
[notification setTitle:@"Some Title"];
[notification setHasActionButton:YES];
[notification setActionButtonTitle:@"Snooze"];

NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
[center setDelegate:self];
[center scheduleNotification:notification];
Run Code Online (Sandbox Code Playgroud)

我面临的问题是,如果单击通知本身或"操作按钮",我只会收到一条消息,但如果单击"其他"按钮(关闭按钮),我还想执行一些代码.如果NSUserNotification被解除或点击关闭按钮,有没有办法得到通知?userNotificationCenter:didActivateNotification:单击关闭按钮时不会触发NSUserNotificationCenter .

如果这是不可能的,有没有办法在其Reminder应用程序中创建Apple使用的下拉按钮(如果用户持有操作按钮,则会打开一个菜单).

谢谢!

cocoa notifications button nsusernotification nsusernotificationcenter

8
推荐指数
0
解决办法
2645
查看次数

XCUITest 的 iOS 模拟器中的强制软件键盘

我正在使用 XCUITest 来测试存在键盘时的 UI 行为 - 例如,当键盘出现时内容是否正确向上移动。

出于某种原因,iOS 模拟器坚持定期禁用软件键盘。有时在模拟器重新启动时,但有时甚至只是在测试过程中切换文本字段时。

有没有办法在模拟器中始终强制使用软键盘?例如命令行参数或 XCUIDevice 上的属性?我在 CI 上运行这些测试,因此无法在模拟器中手动启用软件键盘。

ios ios-simulator uitest xcuitest

8
推荐指数
2
解决办法
1986
查看次数

WPF中基于动态百分比的宽度

也许你们可以帮我解决这个问题:我有一个字典和一个与该字典结合的ItemsControl.每个条目的Key确定ItemsControl中每个Item的内容,Value确定每个Item的宽度.这个问题很大:宽度是一个百分比值,所以它告诉我,例如,我的Item需要是其父级的20%.

我怎样才能做到这一点?我知道网格能够处理基于星的宽度,但由于我必须在网格的开头定义GridDefinition,我不能在ItemsControl.ItemTemplate中执行此操作.

当前代码:

<ItemsControl ItemsSource="{Binding Distribution}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Grid IsItemsHost="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel> 
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <!-- I NEED THIS TO BE A CERTAIN PERCENTAGE IN WIDTH -->
                <Label Content="{Binding Key.Text}" Foreground="{Binding Key.Color}"/> 
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?有没有优雅的方法来解决这个问题?

谢谢!

澄清:百分比应该基于ItemControls父级!

另一个:每个项目应该是网格的一列,而不是一行.所以我需要所有项目在同一行中彼此相邻.

解决方案:

感谢您的帮助,可以通过使用Multibinding和Binding到ItemsControl的ActualWidth来解决此问题.这样,只要ItemsControl的大小发生变化,Items也会发生变化.不需要网格.此解决方案仅创建相对宽度,但当然可以将相同的解决方案应用于项目的高度.这是一个简短的版本,有关更全面的解释,请参见下文:

XAML:

<ItemsControl ItemsSource="{Binding Distribution}" Name="itemsControl"  HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
         <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel IsItemsHost="True" Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel> 
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Label Content="{Binding Key.Text}" 
                       Foreground="{Binding Key.Color}">
                    <Label.Width>
                        <MultiBinding Converter="{StaticResource myConverter}">
                            <Binding Path="Value"/>
                            <Binding …
Run Code Online (Sandbox Code Playgroud)

c# wpf grid dynamic width

7
推荐指数
1
解决办法
1万
查看次数

更喜欢HomeIndicatorAutoHidden不能在iPhone X上工作

我目前正在将我的一个应用程序更新到iPhone X,并试图在显示图像的全屏视图控制器上隐藏主页指示器:

override func prefersHomeIndicatorAutoHidden() -> Bool {
    return true
}
Run Code Online (Sandbox Code Playgroud)

但是,这种方法似乎无能为力.它永远不会被调用,并且即使在一段时间不活动之后,主页指示器也永远不会被隐藏.模拟器似乎支持这一点,因为Photos应用程序确实隐藏了主页指示器.

是否需要设置其他标志才能使其工作?我在多个视图控制器中尝试了它,但没有一个显示正确的行为.

我也尝试添加

if #available(iOS 11.0, *) {
    self.setNeedsUpdateOfHomeIndicatorAutoHidden()
}
Run Code Online (Sandbox Code Playgroud)

对我而言viewDidLoad()无济于事

iphone uiviewcontroller ios home-button iphone-x

7
推荐指数
1
解决办法
3786
查看次数

为什么 @MainActor 中的任务不会阻塞 UI?

今天,我将 SwiftUI 视图的 ViewModel 重构为结构化并发。它会触发网络请求,当请求返回时,更新@Published属性以更新 UI。由于我使用 aTask来执行网络请求,因此我必须返回来MainActor更新我的属性,并且我正在探索不同的方法来执行此操作。MainActor.run一种简单的方法是在 my 内部使用Task,效果很好。然后我尝试使用@MainActor,但不太理解这里的行为。

稍微简化一下,我的 ViewModel 看起来有点像这样:

class ContentViewModel: ObservableObject {
    
    @Published var showLoadingIndicator = false
    
    @MainActor func reload() {
        showLoadingIndicator = true
        
        Task {
            try await doNetworkRequest()
            showLoadingIndicator = false
        }
    }
    
    @MainActor func someOtherMethod() {
        // does UI work
    }
    
}
Run Code Online (Sandbox Code Playgroud)

我原以为这不能正常工作。

首先,我预计 SwiftUI 会抱怨showLoadingIndicator = false主线程之外发生的情况。事实并非如此。所以我设置了一个断点,似乎连Taska 内的内容@MainActor都在主线程上运行。为什么这可能是另一天的问题,我想我还没有完全弄清楚Task。现在,让我们接受这一点。

因此,我预计 UI 在我的网络请求期间会被阻止 - 毕竟,它是在主线程上运行的。但事实也并非如此。网络请求运行,并且 …

actor swift swiftui combine structured-concurrency

6
推荐指数
1
解决办法
1802
查看次数