小编bts*_*umy的帖子

MKAnnotationViews的Z排序

我对MKMapKit的局限性感到相当沮丧.我当前的问题与注释视图的z排序有关,特别是当它与触摸相关时.如果您接受默认的z顺序,mapkit会为您提供:

  1. 订单似乎是随机的.z顺序与添加注释的顺序无关.
  2. 如果一个注释最终位于另一个注释之上,则触摸顶部注释通常会调出底部注释的标注.似乎命中检测甚至不尊重绘制顺序.那是怎么回事?

我尝试使用与Web上的以下代码类似的东西来解决#1(其设计旨在对z顺序进行一些控制)

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
   for (MKAnnotationView * annView in views) {
      TopBottomAnnotation * ann = (TopBottomAnnotation *) [annView annotation];
      if ([ann top]) {
         [[annView superview] bringSubviewToFront:annView];
      } else {
         [[annView superview] sendSubviewToBack:annView];
      }
   }

}

运行传递给mapView的注释视图:didAddAnnotationViews:并调整它们的z顺序确实似乎修复了#1.问题是现在标注视图不再总是位于注释视图的顶部.MapKit似乎对图层感到非常困惑(应在所有注释视图上方的图层中绘制标注).我甚至可以弄清楚它是如何混淆的,因为你收到的所有MKAnnotationViews都有相同的superview(私有类MKOverlayView).您会认为任何合理的设计都会绘制有关此叠加视图的标注.

有没有人成功解决了#1或#2?

iphone mapkit mkpinannotationview

13
推荐指数
3
解决办法
8615
查看次数

NSNumberFormatter不允许输入十进制数字

我使用NSNumberFormatter完全不知所措.这应该是完全简单但我不能让它工作.

我想设置一个NSTextField以允许输入十进制数字,或者带小数点或不带小数点.以下是我认为可行的方法:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMinimumFractionDigits:0];
[formatter setMaximumFractionDigits:4];
[formatter setAllowsFloats:YES];
[[timeFlowMultiplierTF cell] setFormatter:formatter];
Run Code Online (Sandbox Code Playgroud)

但是,在文本字段中键入时,按小数点的"句点"键不会产生一个.键入"3.14"给我"314".抛出[formatter setAlwaysShowsDecimalSeparator:YES]将最初正确格式化数字,但如果我输入它,我再次无法输入小数点.

我在这里错过了什么?你会认为这很简单

macos cocoa nstextfield appkit nsnumberformatter

9
推荐指数
1
解决办法
1617
查看次数

使用核心动画显式动画NSView

我正在尝试NSView使用核心动画进行滑动.我想我需要使用显式动画而不是依赖于类似的东西[[view animator] setFrame:newFrame].这主要是因为我需要设置动画委托才能在动画结束后采取行动.

我使用动画师工作得很好,但正如我所说,我需要在动画结束时收到通知.我的代码目前看起来像:

// Animate the controlView
NSRect viewRect = [controlView frame];
NSPoint startingPoint = viewRect.origin;
NSPoint endingPoint = startingPoint;
endingPoint.x += viewRect.size.width;
[[controlView layer] setPosition:NSPointToCGPoint(endingPoint)];

CABasicAnimation *controlPosAnim = [CABasicAnimation animationWithKeyPath:@"position"];
[controlPosAnim setFromValue:[NSValue valueWithPoint:startingPoint]];
[controlPosAnim setToValue:[NSValue valueWithPoint:endingPoint]];
[controlPosAnim setDelegate:self];
[[controlView layer] addAnimation:controlPosAnim forKey:@"controlViewPosition"];
Run Code Online (Sandbox Code Playgroud)

这在视觉上有效(并且我在最后得到通知),但看起来实际的controlView没有被移动.如果我使窗口刷新,controlView将消失.我试过更换

[[controlView layer] setPosition:NSPointToCGPoint(endingPoint)];
Run Code Online (Sandbox Code Playgroud)

[controlView setFrame:newFrame];
Run Code Online (Sandbox Code Playgroud)

这确实会导致视图(和图层)移动,但它会破坏某些东西,以至于我的应用程序很快就会因为seg故障而死亡.

大多数显式动画的例子似乎只是在移动a CALayer.必须有一种方法来移动NSView并且还能够设置代理.任何帮助,将不胜感激.

cocoa delegates core-animation explicit nsview

7
推荐指数
2
解决办法
8520
查看次数

将Mac罗马字符转换为等效的UTF-8

我收到了一些使用Mac OS Roman文件编码的HTML文件.这些文件有法语文本,但在编辑器中,许多变音字符看起来很奇怪(即非法语)

Si cette option est sÈlectionnÈe, <removed> tentera de communiquer avec votre tÈlescope seulement ‡ líaide díun ...
Run Code Online (Sandbox Code Playgroud)

具有重音的大写字母E在浏览器中正确显示为é,与其他奇怪字符一样.

我还有一些UTF-8法语文件在编辑器中看起来很正常(é看起来像é).我想做的是将所有Mac Roman文件转换为UTF-8以便于维护.

只需在编辑器中更改文件编码就不会这样做.奇怪的人物仍然很奇怪.

如果没有制作转换字典并对所有文件进行查找/替换,有没有办法做到这一点?

unicode utf-8 character-encoding file-encodings mac-roman

6
推荐指数
2
解决办法
5464
查看次数

Google Play扩展文件位置

我们使用Google Play扩展APK机制获得了一个约600MB的大型扩展文件。我们还必须解压缩该文件以进行实际使用。因此,整个应用程序加上数据需要大约1.4 GB的存储空间。

据我所知,Google Play坚持将.obb下载到“内部” SD上,并且似乎没有任何方法可以更改它。我们有许多用户的“外部” SD卡上有很多可用空间,但内部的SD卡上的空间却有限。他们为该应用占用如此多的空间而尖叫。我们有什么可以做的吗?

目前,我们将.obb文件扩展为:

getExternalStorageDirectory()/ Android / data

我想我们可以问用户他们想要的地方,他们可以选择真正的外部SD卡。但是,这仍然会在内部SD卡上留下一个(大部分没用的).obb文件,Google Play表示我们无法删除此文件。

有人对如何正确处理有任何建议吗?

android apk-expansion-files

5
推荐指数
1
解决办法
4097
查看次数

在Simulator中调试Apple Watch应用程序的iOS部分

几年前,我使用watchOS 1 SDK编写并调试了Apple Watch应用程序.我现在正在使用watchOS 3 SDK开发新的手表应用程序.

Watch App部分可以进行调试.我可以设置断点并逐步完成它.但是,我使用WatchConnectivity框架从iOS应用程序获取信息.这不起作用,我无法调试它.

当我在Xcode中运行WatchApp方案时,会启动两个模拟器,一个用于iOS应用程序,另一个用于WatchApp.我看到WatchApp启动但不是iOS应用程序.如果iOS以前运行,它似乎被杀死.

我在应用程序上设置了一个断点:didFinishLaunchingWithOptions:在iOS应用程序中,方法但是这个断点从未被击中.应该是吗?

我不记得几年前遇到这些问题.

运行WatchApp方案是否应自动启动iOS应用程序并允许其进行调试?我的didFinishLaunchingWithOptions:断点是否应该被击中?

另一件有点奇怪的事情可能是暗示iOS模拟器中的外部显示列表从不显示监视应用程序显示.我认为应该.

我已经尝试清理项目,重新启动Xcode甚至重新启动计算机.没有快乐.

xcode ios apple-watch

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

在Xcode中设置断点时,iOS应用程序崩溃

我有一个应用程序我正在开发的应用程序运行时在Xcode中设置断点导致它崩溃.至少我认为这是一次崩溃.有没有在控制台中说发生了什么.该应用程序刚刚终止.

请注意,断点没有被击中,只是设置它的行为导致了这一点.

我已经开发了很多应用程序,这是第一个这样做的.有没有人有任何想法可能会发生什么或如何解决这个问题?它确实减慢了我的调试速度.

crash xcode breakpoints ios

0
推荐指数
1
解决办法
1526
查看次数