小编Jay*_*ani的帖子

cancelAllOperations对[NSOperationQueue mainQueue]不起作用

cancelAllOperations()不适用于mainQueue(该cancel()方法未在该NSOperation对象上调用).我错过了什么吗?我必须遍历所有操作并调用cancel()方法才能使其工作.

nsoperationqueue ios

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

如何从ControlCenter实施搜索?

我正在尝试实现对Control Center中可用的播放控件的支持.播放/暂停等我处理UIEventTypeRemoteControl事件,并寻找亚型UIEventSubtypeRemoteControlPlay/ UIEventSubtypeRemoteControlPause

但是,当我尝试拖动播放位置时,我没有得到任何事件.是否有不同的处理方法?

ios control-center

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

有没有办法防止CALayer阴影重叠相邻的图层?

我有一个集合CALayers.每个图层都是同一父图层的子图层,每个图层都CALayer应用了一个阴影.这些图层是动态定位的,其中有很多层,所以我无法预测它们将如何提前排列.

如果这些层彼此相邻(足够接近以至于它们几乎接触),则其中一个的阴影CALayers将呈现在另一个之上CALayer.在大多数情况下,这可能是理想的效果,但我希望我的图层存在于同一个z平面中.(这方面的一个例子是CSS3阴影应用于网页设计中的块元素.)

这可能吗?我怎样才能做到这一点?

(我有这个想法:CALayer用我自己的阴影图像为每个阴影图像添加一个'阴影'子图层,并将z位置设置为较低的值.但是层树不能使这个不可能吗?在一个层的坐标中的Z位置系统独立于另一层坐标系中的z位置,对吧?)

core-animation ios

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

错误:在Xcode中使用未声明的类型'NSObject'

我构建了一个名为"CheckItem"的新数据结构(我正在做一个Todo项目)

我让CheckItem类继承NSObjectNSCoding

但Xcode警告第1行的编译时错误:

class CheckItem : NSObject,NSCoding {
Run Code Online (Sandbox Code Playgroud)

提示是:使用未声明的类型'NSObject'(和'NSCoding')

全班如下:

 class CheckItem : NSObject,NSCoding {
        var text: String
        var isDone :Bool
        var imageName :String
        init(text: String,isDone: Bool,imageName: String){
            self.text = text
            self.isDone = isDone
            self.imageName = imageName
        }
        init(text: String,isDone: Bool){
            self.text = text
            self.isDone = isDone
            self.imageName = "No Icon"
        }

}
Run Code Online (Sandbox Code Playgroud)

你能指出我的错误吗?非常感谢你!

xcode ios swift

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

navigationBar和MPMoviePlayerController非常奇怪的行为.iOS中的错误或我的错误?

我有一个MPMoviePlayerController以纵向或横向方式播放全屏视频的对象.如果我在视频播放时旋转方向并在视频开始播放后几秒钟内完成旋转并且视频状态栏可见,则当视频结束时我的导航栏是完美的.但是,如果我等到视频状态栏消失几秒钟进入视频播放然后旋转方向,当视频结束时我navigationBar部分隐藏在状态栏后面,就像向上推.

你见过这样的东西吗?

我能够轻松地重新创建这个bug.我创建了一个新的单视图应用程序,只需添加一个按钮和一个导航栏.如果我在播放视频时旋转方向,点击以启用全屏,视频状态栏仍然可见,视频播放完毕后,一切都很好.但是,如果我在视频状态栏消失后等待旋转,当我旋转并且视频结束时,navigationBar位于状态栏下.见图:

iPhone图片

这是我正在使用的简单代码:

- (void) playMovie {
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource: @"movie" ofType: @"mov"]];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: url];

[[NSNotificationCenter defaultCenter] addObserver: self 
                                         selector: @selector(moviePlayBackDidFinish:) 
                                             name: MPMoviePlayerPlaybackDidFinishNotification 
                                           object: moviePlayer];

moviePlayer.controlStyle = MPMovieControlStyleDefault;
moviePlayer.shouldAutoplay = YES;

[self.view addSubview: moviePlayer.view];
[moviePlayer setFullscreen: YES animated: YES];

- (void) moviePlayBackDidFinish: (NSNotification *) notification
    MPMoviePlayerController *player = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver: self 
                                                name: MPMoviePlayerPlaybackDidFinishNotification 
                                              object: player];

if ([player respondsToSelector: @selector(setFullscreen:animated:)])
{
    [player.view removeFromSuperview];
} …
Run Code Online (Sandbox Code Playgroud)

iphone uinavigationbar mpmovieplayercontroller ios

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

如果在AppDelegate中为通知添加观察者,我是否需要打扰删除它?

在AppDelegate中didFinishLaunchingWithOptions:

[[NSNotificationCenter defaultCenter] addObserver:self 
                                      selector:@selector(contextChanged:)
                                      name:NSManagedObjectContextDidSaveNotification
                                      object:nil];
Run Code Online (Sandbox Code Playgroud)

这样我就可以将更改合并到其他线程的数据中.

问题:我是否需要在applicationWillResignActive或中删除此侦听器applicationWillTerminate?看起来似乎没有意义.我想我问的是,在主循环中有这样的监听器是否正常,从来没有被删除过.

nsnotifications ios

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

用于异步Web服务调用的NSURLConnection NSURLRequest代理

我有多个视图相同NSURLRequest/NSURLConnection request.理想情况下,为了获得一些代码重用,我想要某种"代理"来完成创建/执行(异步)请求/连接,设置所有委托方法等所有基础工作. ,所以我不必NSURLConnection在每个视图中复制所有委托方法处理程序.首先,这种设计方法是否合理?第二,我将如何做这样的事情?

对于一些背景信息,我尝试了这个并让它"工作",但是,它似乎不是异步执行.我创建了一个Proxy.h/m文件,其中包含不同Web服务调用的实例方法(还包含NSURLConnection委托方法):

@interface Proxy : NSObject {

    NSMutableData *responseData;
    id<WSResponseProtocol> delegate;
}

- (void)searchForSomethingAsync:(NSString *)searchString delegate:(id<WSResponseProtocol>)delegateObj;

@property (nonatomic, retain) NSMutableData *responseData;
@property (assign) id<WSResponseProtocol> delegate;

@end
Run Code Online (Sandbox Code Playgroud)

WSResponseProtocol定义如下:

@protocol WSResponseProtocol <NSObject>

@optional
- (void)responseData:(NSData *)data;
- (void)didFailWithError:(NSError *)error;

@end
Run Code Online (Sandbox Code Playgroud)

要使用它,视图控制器只需要符合WSResponseProtocol协议,以捕获响应.进行Web服务调用是这样完成的:

Proxy *p = [[Proxy alloc] init];
[p searchForSomethingAsync:searchText delegate:self];
[p release];
Run Code Online (Sandbox Code Playgroud)

我可以提供更多代码,但剩下的可以假设.在打电话之前,我"开始动画"一个UIActivityIndicatorView微调器.但旋转器从不旋转.如果我只是将NSURLConnection委托方法直接放在视图控制器中,那么微调器就会旋转.所以,它让我觉得我的实现不是异步执行的.这里有什么想法/想法吗?

iphone asynchronous uiviewcontroller nsurlconnection nsurlrequest

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

NSURL为null,而在Objective-C中NSString是正确的

我有一个NSString含有一个URL并且当我分配NSURLNSString,NSURL输出(空).这是因为url中存在一些非法字符,NSURL如果不对NSString包含url的编码进行编码,则无法读取.

NSString *u = [incomingUrlString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL *url = [NSURL URLWithString:u];

NSLog(@"INCOMINGURLSTRING: %@" , u);
NSLog(@"URL: %@" , url);
Run Code Online (Sandbox Code Playgroud)

输出是:

 INCOMINGURLSTRING: /url/path/fileName_blå.pdf
 URL: (null)
Run Code Online (Sandbox Code Playgroud)

incomingUrlString包含挪威语字母"å",我认为这是存在的原因NSURL(null)

我也试过这个:

NSString *trimmedString = [file stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)trimmedString, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", kCFStringEncodingUTF8);

NSLog(@"TRIMMEDSTRING: %@" , trimmedString);
NSLog(@"ENCODEDSTRING: %@" , [encodedString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);

NSURL *url = [NSURL URLWithString:encodedString];

NSLog(@"URL: %@" , url);
Run Code Online (Sandbox Code Playgroud)

这里的输出是:

 TRIMMEDSTRING: /url/path/fileName_blå.pdf
 ENCODEDSTRING: /url/path/fileName_blå.pdf
 URL: %2Furl%2FPath%2FfileName_bl%C3%A5.pdf
Run Code Online (Sandbox Code Playgroud)

我的目标是将URL加载到 …

iphone xcode objective-c nsstring ios

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

如何使用UIImagePickerController设置捕获的照片的位置?

我希望通过UIImagePickerController在带有地理标记的照片应用程序中使用我拍摄的照片(照片拍摄地点).

在使用捕获快照时UIImagePickerController,我想标记捕获图片的当前位置,这样当它保存到时PhotoLibrary,它应该在地图上显示照片(标准应用程序以显示照片/视频)应用程序.任何人都有任何想法,照片应用内部机制如何在地图上显示照片/视频.

photos uiimagepickercontroller ios

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

iOS StoreKit在沙箱中升级应用后返回invalidProductIdentifiers

我正在测试我的某个应用程序的升级过程,但我无法从App Store获取In App Purchase的产品信息.

我打开了两个项目XCode,第一个是我当前版本的代码(2.0),另一个是提交给Apple批准的工作版本(1.0)的代码.

  1. 我构建并运行1.0
  2. 该应用执行产品请求:

    productRequest = [[SKProductsRequest alloc] initWithProductIdentifiers: productIds];
    productRequest.delegate = self;
    [productRequest start];
    
    Run Code Online (Sandbox Code Playgroud)
  3. SKProduct实例返回响应(在response.products中)

  4. 然后我在另一个项目中构建并运行2.0

  5. 该应用程序执行产品请求
  6. 返回响应,但所有产品ID都被重新调整为无效(在response.invalidProductIdentifiers中)

但是如果我在运行2.0之前卸载应用程序,一切正常并按SKProducts预期返回.

我也使用ad hoc构建而不是调试构建经历了相同的过程,但行为是相同的.

除了App Version和Build之外,所有项目设置在两个项目中都是相同的.

所以,有两种选择.要么StoreKit有问题,除了它是犯罪非冗长的,或者(更有可能)我在测试过程中做错了什么.

是否可能存在某种沙盒不匹配(或某种东西),因为我正在使用不同的项目构建一个应用程序而不是另一个应用程序?

你会如何测试这种情况?

app-store storekit in-app-purchase ios

5
推荐指数
0
解决办法
660
查看次数