小编jrt*_*ton的帖子

如何延迟显示Game Center的弹出窗口?

我已将游戏中心(GC)整合到我的游戏中.它的效果非常好,除了恼人的消息,它可以在激烈的动作中弹出,需要玩家100%的注意力:

"无法连接到Game Center服务器.取消/重试?"

我不介意这个消息,但信息不是那么迫切,必须立即显示.我希望在用户导航到主菜单或其他某个点后显示它.有没有办法实现它?

iphone objective-c ios game-center

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

KVO区分willChangeValueForKey和didChangeValueForKey - 都是必要的吗?

根据Apple自己的建议,当手动设置符合KVC/KVO标准的访问器时,应该包括BOTH KVO方法willChangedidChange.这就是我在所有手动访问器方法中所做的.

然而,observeValueForKeyPath:ofObject:change:context使用完全相同的字典内容来调用KVC方法的每一半(将要和做过).

当使用选项注册观察者时:NSKeyValueObservingOptionPrior观察者仍然被调用两次 - 每半次一次 - 并且再次使用相同的字典内容,仅保存字典中包含键'notificationIsPrior'的差异.

现在,当KVO用于改变"CPU价格昂贵"的属性时 - 比如改变颜色或重新绘制大而精细的设计,只有对'didChange'采取行动并忽略(或至少分离出)'willChange才有意义".在过去,我通过将密钥字符串转换为枚举列表元素来实现此目的,该元素返回左移'1'并使用该数字在收到第一个调用时设置32或64位整数的标志标志在第二个重置,我执行CPU密集型操作.

然而,令我感到震惊的是,对于每个案例来说,这都是一个非常重要的开销.有没有人有任何其他'首选'的方法来区分'willChange'和'didChange'的回调而不允许两次完成相同的处理?

我已经仔细搜索了Apple自己的文档和这个帮助小组的大量替代品,但Apple自己的doc实际上并没有详细介绍这个主题,而且这个小组中的一些人也有类似的问题摔跤.在任何情况下都没有提供确定的解决方案.如果有人知道更好的方式 - 除了用交替的旗帜躲避'willChange' - 我会非常感激.(为什么Apple不能在更改字典中包含'阶段'键?)

callback key-value-observing key-value-coding ios

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

如何处理从NSCollectionView单击按钮

我有一个NSCollectionView (OS X,而不是iOS)绑定到我的模型.每个集合视图项都有一个按钮和一个标签.我正在处理点击操作,我有senderevent参数,但我无法区分一个按钮与其他按钮.大多数其他不处理集合视图的问题都说使用该tag属性,但这不会在Interface Builder的绑定选项卡上公开.有一个ArgumentArgument2绑定,但它们似乎不对应tagobjc代码中的属性,我不知道如何以其他方式访问这些参数.

-(void)image_click:(id)sender forEvent:(NSEvent *)event
{
    NSButton *btn = sender;
    NSLog(@"image clicked, %ld", (long)btn.tag);   //image clicked, 0
}
Run Code Online (Sandbox Code Playgroud)

如何在集合视图中的一组按钮的单击操作中区分Objective-C代码中的按钮?

xcode cocoa objective-c interface-builder

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

内容偏移动画已损坏

我有一个动画,当手势识别器(双击)触发时,它会被踢掉:

[UIView animateWithDuration:0.3 animations:^{
  _scrollView.contentOffset              = CGPointMake(x, y);
  _scrollViewContentView.frame           = someFrame;
  _scrollViewContentView.layer.transform = 
       CATransform3DMakeScale(1.f/_zoomScale, 1.f/_zoomScale, 1.f);            
}];
Run Code Online (Sandbox Code Playgroud)

除了一种情况之外它工作得很好:如果scrollViewWillBeginDecelerating在动画执行之前没有调用委托方法(只是拖动几乎我的scrollview).

我只是有scrollViewDidEndDragging方法叫.我可以等20秒,然后播放我的动画.它会正常播放,除了我的contentOffset.

委托方法本身什么都不做,只是添加它们才能看出问题所在.

我不知道为什么.

编辑:这是我的问题视频.第1阶段:减速滚动,第2阶段没有.看看最后的位置.阶段1是正确的但不是阶段

objective-c uiscrollview ios contentoffset animatewithduration

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

UITableView失去选择

我有UITableView选择的问题.如果单击编辑按钮,TableView将进入编辑模式并丢失当前选择.

如何在不丢失选择的情况下进入编辑模式?

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Return NO if you do not want the specified item to be editable.
    return YES;

}
Run Code Online (Sandbox Code Playgroud)

uitableview ios

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

如何在文档目录的子文件夹中创建文件?

我在文件目录中创建一个名为newFolder的文件夹.现在我想知道如何在我的文件夹中创建txt文件,这是用newFolder创建我现在如何在文件目录中创建文件,但如何在我的文件夹中创建文件,这是由我创建.我想从newFolder获取此文件并传递给iPhone中的邮件编辑器.

这是我的文档文件夹中的创建文件夹,但现在我想在此文件夹名称中创建文件newFolder帮助我.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"newFolder"];
    NSError *error = NULL;
    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
        [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error];
Run Code Online (Sandbox Code Playgroud)

我写这个代码,但我的csv文件是在doument diretory文件夹中创建我想在我的文件夹中创建这个文件,这是doument目录有名称newFolder

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *docDir = [paths objectAtIndex:0];

        NSString *filename = [docDir stringByAppendingPathComponent:[NSString stringWithFormat:@"EmployeeBase.Csv"]];
            NSError *error = NULL;
            BOOL written = [csvString writeToFile:filename atomically:YES encoding:NSUTF8StringEncoding error:&error];
            if (!written)
                NSLog(@"write failed, error=%@", error);
Run Code Online (Sandbox Code Playgroud)

iphone objective-c

5
推荐指数
2
解决办法
8290
查看次数

在UITableView的didSelectRow之前调用Storyboard segue

我有一个故事板,其中包含来自表格单元格的segue.我想在选择行时使用某些数据设置一些属性,所以我执行以下操作:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [[ProperyManager sharedPropertyManager]setSelectedRow:[verseIds objectAtIndex:indexPath.row]];
    [[ProperyManager sharedPropertyManager]setID:[poemIDs objectAtIndex:indexPath.row]];
    [[ProperyManager sharedPropertyManager]setRowToReturn:[NSString stringWithFormat:@"%i",indexPath.row]];


}
Run Code Online (Sandbox Code Playgroud)

问题是,目标视图控制器的视图控制器生命周期方法(viewWillAppear等)在上面的didSelectRow方法之前被调用,因为segue在执行委托方法之前推送视图.

我怎么能绕过这个?

storyboard tableview didselectrowatindexpath ios

5
推荐指数
2
解决办法
2309
查看次数

如何覆盖 NSManagedObjects 的 hash 和 isEqual?

我们有一堆不同类型的 NSManagedObjects。其中一些具有其他 NSManagedObjects 的 NSSet 成员。问题是我真的需要覆盖集合中对象的哈希和 isEquals 方法 - 但它们是 NSManagedObjects。我在获取集合中的多个相同对象时遇到问题。据我所知,由于哈希默认为对象地址 - 所有对象都不同。所以我需要覆盖 hash 和 isEquals - 但看不到任何方法。

我们拥有的是系统中的一堆东西,更多的东西是通过 XML 进来的——有时是现有对象的重复。当它们相同时,我不希望将重复添加到集合中。

hash nsset nsmanagedobject ios

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

如何在Objective-C中全局定义宏?

我想全局定义一个宏.我想覆盖NSLocalizedString()整个项目.这可能吗,我该怎么办?

iphone macros objective-c ios

4
推荐指数
2
解决办法
3124
查看次数

无法从UITableViewCell中删除标签

我有一个名为"TaskTable"的UITableView,我在这个方法的TaskTable的每个单元格的contentview中添加了一个标签

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
Run Code Online (Sandbox Code Playgroud)

我的标签标签是50,我在表格视图的构建单元格中使用,而不是自定义单元格.

现在,当我尝试使用此代码从TaskTable中删除我的标签时:

for(UILabel *lbl in [cell subviews])
    {
       if(lbl.tag == 50)
        {
          [lbl removeFromSuperview];
        }

   }
Run Code Online (Sandbox Code Playgroud)

如果条件,代码不会输入此.为什么找不到标签?这是因为我使用内置单元格只找到自己的文本标签,或者还有其他一些我遗漏的问题?

uitableview ios

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