小编vzm*_*vzm的帖子

如何在Storyboards的UITableViewController底部添加工具栏?

在我的UITableView设置中使用Storyboard,我需要能够添加一个粘贴到视图底部的工具栏,它不应该滚动.

不同于这个问题:LINK我不认为我可以将TableView子视图添加到普通视图,然后只是以编程方式添加工具栏,因为我使用的动态单元看起来更容易通过Storyboard进行集成.

就目前而言,这就是我所困扰的...... 在此输入图像描述

iphone objective-c uitableview uiview ios

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

如何将粒子效果添加到不是使用iOS 7 SpriteKit粒子的游戏的iOS应用程序?

我需要在我的应用程序中添加雨粒子效果,我一直很难找到实际执行这个想法的方法.

我尝试按照这个CALayer方法教程:链接, 但我不太确定这是否是最好的方法,考虑到Xcode 5中提供的新的iOS 7 SpriteKit粒子发射器.

我已经创建了.sks文件并且它在我的层次结构中,但我仍然无法将其添加到我的故事板/项目中.

话虽如此,我究竟如何在我的视图中添加SpriteKit粒子(sks)?我对SpriteKit框架中的场景,分层等并不熟悉,因为我不是游戏开发人员.我需要尽可能多的细节和示例代码,以便我能够解决这个问题

更新:我已按照SO成员答案中提供的指示:AyatollahAndy,请参阅下面的答案.虽然我能够SKSceneview收到任何触摸事件时显示我的应用程序崩溃.我得到以下内容:在此输入图像描述

谢谢

objective-c uiview ios sprite-kit skemitternode

34
推荐指数
3
解决办法
2万
查看次数

iOS7 - ABPersonViewController,编辑模式

Apple提供了一个很好的综合小例子,"QuickContacts"(developer.apple.com/library/IOs/samplecode/QuickContacts/Introduction/Intro.html),概述了通讯簿UI框架的基本用法. - 可下载的源代码按照描述工作(一旦将名为"Appleseed"的人添加到地址簿中,或者将第246行(QuickContactsViewController.m)中的人名更改为地址簿中已存在的内容).

问题: 我们如何修改功能-(void)showPersonViewController函数ABPersonViewController "picker",使其在打开时(在被推送到navigationController的堆栈之后)已经处于编辑模式(具有可见的"完成"editButton).

在"7"之前的iOS版本中,只需插入例如picker.editing = YES;在将选择器推到导航堆栈之前,以便在打开时看到它(在下面的代码中看到编辑模式),这是一个直接的问题.

在iOS7中,这不再起作用了.

这是iOS7中的一个错误,如果是这样,是否有一个简单的解决方法(而不是例如逆向工程ABPersonViewController类)? - 或者它需要以不同的方式编码,这些天?

期待您的评论.

-(void)showPersonViewController
{
    // Search for the person named "Appleseed" in the address book
    NSArray *people = (NSArray *)CFBridgingRelease(ABAddressBookCopyPeopleWithName(self.addressBook, CFSTR("Appleseed")));
    // Display "Appleseed" information if found in the address book 
    if ((people != nil) && [people count])
    {
        ABRecordRef person = (__bridge ABRecordRef)[people objectAtIndex:0];
        ABPersonViewController *picker = [[ABPersonViewController alloc] init];
        picker.personViewDelegate = self;
        picker.displayedPerson = …
Run Code Online (Sandbox Code Playgroud)

addressbook ios abpersonviewcontroller ios7

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

iAds从后台重新启动应用程序后加载限制(也在iAdSuite中发生)

我正在尝试将NavigationBanner iAdSuite示例实现到我的项目中,以便我可以AdBannerView跨多个视图控制器共享单个实例,但我不断收到以下错误:

错误域= ADErrorDomain代码= 2"操作无法完成.加载受限制

我已将相关代码完全从当前的iAdSuite复制到我自己的应用程序中,并收到此错误.实际上,这个错误在Apple自己的NavigationBanner的iAdSuite示例中是可重复的(这是我试图实现的示例).通过添加以下内容可以看到错误:

NSLog (@"%@",error);
Run Code Online (Sandbox Code Playgroud)

至:

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
Run Code Online (Sandbox Code Playgroud)

要复制问题,iAdSuite请执行以下操作:

  1. 将设备飞行模式设置为开
  2. 从Xcode启动iAdSuite NavigationBanner.这会立即生成错误"ADErrorDomain error 1".
  3. 按设备上的主屏幕按钮退出应用程序,然后关闭飞行模式.
  4. 通过点击图标重新启动NavigationBanner,然后出现错误.

这对我的应用程序来说是一个问题,因为我想在没有连接的情况下隐藏iAd,然后在连接恢复后重新显示它.如果应用收到限制错误,那么在收到其他广告之前会有很长时间的延迟.

如何避免节流错误?我认为bannerView需要被删除然后重新添加,但无法弄清楚如何正确地执行此操作.

最后要注意的是,当前的iAdSuite使用ARC而我的应用程序却没有.即便如此,我的app和iAdSuite也会出现错误.

cocoa-touch objective-c iad

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

如何将静态UITableView设置为UIView的子视图?

当我使用a时,TableViewController我能够在故事板中设置所有内容.由于我在表格视图中使用静态单元格而不是动态属性,因此我觉得这种方法更方便,更容易实现.我挂钩新的UITableView类,只是删除所有委托方法.像故事一样工作,因为所有内容/按钮都在故事板中设置.

我试图完成相同的结果,除了这次,我必须在a中工作ViewController并添加一个TableView作为子视图.一旦我连接了正确的类,添加我的插座连接并设置以下代理:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 3;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"MainCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    return cell;
}
Run Code Online (Sandbox Code Playgroud)

如果我TableView设置为动态属性,这很有效: 在此输入图像描述

但是,当我将表格视图内容更改为静态单元格并删除委托方法时,我的应用程序崩溃了.那么,我怎样才能将静态单元格(我可以在故事板中操作)的表格视图添加到我的ViewController

objective-c uitableview uiview ios

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

SKColor clearColor会返回黑色吗?

SKScene在启动期间设置了以下方式:

-(id)initWithSize:(CGSize)size {
    if (self = [super initWithSize:size]) {


        self.backgroundColor = [SKColor clearColor];

    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

但不知何故,我得到的是以下,黑色,根本不清楚: 在此输入图像描述

我在这里错过了什么?如何让这个场景清晰?我已经把视野保持清晰,但这仍然是我得到的.

更新:我也尝试过设置,myView.opaque = NO;但这根本没有帮助.

objective-c uiview ios ios7 sprite-kit

10
推荐指数
2
解决办法
4877
查看次数

iOS7 UIScrollView contentInset不起作用

当键盘被隐藏时,scrollview应该回到它的原始contentInset,但它在iOS7中不起作用.设置scrollview的contentInset时显示键盘工作但键盘隐藏时,scrollview的contentInset不能设置为插入零.代码:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:Nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasHidden:) name:UIKeyboardDidHideNotification object:nil];
}

- (void)keyboardWasShown:(NSNotification *)notif
{
    CGSize keyboardSize = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0, 0, keyboardSize.height, 0);


    UIScrollView *scrollView = (UIScrollView *)self.view;
    scrollView.contentInset = contentInsets;
    scrollView.scrollIndicatorInsets = contentInsets;

    CGRect rect = self.view.frame;
    rect.size.height -= keyboardSize.height;
    if (!CGRectContainsPoint(rect, self.wishContentField.frame.origin)) {
        CGPoint point = CGPointMake(0, self.wishContentField.frame.origin.y - keyboardSize.height);
        [scrollView setContentOffset:point animated:YES];
    }

}
- (void)keyboardWasHidden:(NSNotification *)notif
{
    UIEdgeInsets zeroInsets = UIEdgeInsetsZero;
    UIScrollView …
Run Code Online (Sandbox Code Playgroud)

uiscrollview ios ios7

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

按下发送按钮后,MFMessageComposeViewController消息消失并无法发送(iOS 7)

我有一个应用程序,用户可以通过将图像附加到MFMessageComposeViewController的实例来选择图像并将其发送给朋友.在MFMCVC视图中按下发送后,事情在某些时候按预期工作 - 带有图像的消息已成功发送给收件人,或者"消息失败"标签显示在本机iMessage客户端中的消息旁边(但在两种情况下,图像在本机客户端中可见.但是,按下发送后的一半时间内会出现一个错误(在运行iOS 7的iPhone 4上).消息 - 附件和所有 - 消失,再也不会被看到.收件人从未收到邮件,也不会出现在iMessage的发件人邮件通道中.

我很确定这是Apple的MFMessageComposeViewController本身的一个错误,因为API很简单,我能够在单独的演示应用程序中可靠地重现错误https://github.com/timcour/mf-message-compose- fail-demo.git.

- (void)displaySMSComposerSheet
{
    MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
    picker.messageComposeDelegate = self;

    NSData *data = [_imageDataCache objectForKey:[_imageURLs objectAtIndex:_currentIndex]];
    [picker addAttachmentData:data
               typeIdentifier:(NSString *)kUTTypeGIF
                     filename:@"share.gif"];
    if (![self.recipientTextField.text isEqualToString:@""]) {
        picker.recipients = [NSArray arrayWithObject:self.recipientTextField.text];
    }
    picker.body = [NSString stringWithFormat:@"image: %i", _currentIndex];

    [self presentViewController:picker animated:YES completion:NULL];
}
Run Code Online (Sandbox Code Playgroud)

在很多成功和失败的情况下观察用户界面之后,在强调操作系统加剧的组合视图中似乎是一种竞争条件 - 不确定它是内存还是CPU压力(或两者兼而有之?).在任何情况下,当发送成功时,在选择联系人之后立即用其相应会话的内容填充消息信道的内容,明显地将新消息附加到结尾.但是当错误表面和消息消失时,对话的先前消息通常仅在按下发送按钮后才出现,而不显示新消息.如果这确实是竞争条件,那么一个猜测是它是作曲家VC的消息提取机制和-viewDidLoad.

有没有人在此之前遇到过这种情况并且/或者知道某种解决方法?我将向苹果提交一份错误报告,但我想找到一个不包括等待Apple修复的解决方案.

笔记:

  • iPhone 4和iPhone 5s上的消息最常消失,但iPod touch第5代(所有运行的iOS 7.0.2)很少消失.

  • 使用iPhone 4上的https://github.com/timcour/mf-message-compose-fail-demo.git应用程序,通过尽可能快地将20张图像发送给同一个人,可以最轻松地复制该错误.

  • 有一个单独的(但可能是相关的)错误.在MFMCVC视图中选择输入联系人的电子邮件地址后,vc将确定是否应发送iMessage或MMS.在测试期间的某些时间,它做出了错误的决定,并尝试将消息作为MMS发送,尽管收件人iMessage帐户没有与之关联的电话号码.这导致向发件人发送一条消息,就好像它已成功发送,但实际上无法到达目的地.

  • 这似乎并不是许多用户向Apple抱怨的"iMessage无法发送消息"的错误.

更新:

以下是消息消失且无法发送时记录的堆栈跟踪: …

objective-c ios imessage mfmessagecomposeviewcontroller

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

如何为Twitter /行动表制作社交分享例外?

我使用以下代码在我的应用程序中调用操作表共享:

- (IBAction)sendPost:(id)sender
{
    NSArray *activityItems = nil;
    UIImage *appIcon = [UIImage imageNamed:@"appIcon.png"];
    NSString *postText = [[NSString alloc] initWithFormat:@"LETS ASSUME THIS STRING IS LONGER THAN 140 CHARACTERS THAT TWITTER PROHIBITS BUT CAN STILL BE SHARED VIA FACEBOOK, EMAIL, TEXT"];
    activityItems = @[postText,appIcon];
    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
    [self presentViewController:activityController animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

问题是这个:postText超过140个字符,所以不可能通过twitter分享,字符数将是-x(你通过twitter分享的红色字符数),我的问题是:怎么能我做了一个例外,以便shortPostText在选择Twitter进行共享时使用的是另一条消息吗?

一旦你sendPost发送了动作,我就看不到为twitter明确设置字符串的方法了:

在此输入图像描述

编辑:我不明白为什么有人会对这个问题进行投票,我不会问如何制作if/else语句或如何编程.这是一个真正的问题,需要一个真正的答案.

更新:我需要解决这个问题,因为当用户尝试通过我的应用程序中的Twitter共享时,这是我得到的:

在此输入图像描述

红色/负号字符指示符和非活动帖子按钮,因此除非字符数减少到0或更少,否则不允许帖子转到twitter.

twitter objective-c uiactionsheet ios social-framework

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

麦克风无法在iOS 7上运行

我想问一下简单的麦克风音量检测问题.我的代码适用于iOS 6或更低版本,但不适用于iOS 7,我的代码如下所示:

-(void)viewDidLoad{


NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
                              [NSNumber numberWithFloat: 44100.0],                 AVSampleRateKey,
                              [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
                              [NSNumber numberWithInt: 1],                         AVNumberOfChannelsKey,
                              [NSNumber numberWithInt: AVAudioQualityMax],         AVEncoderAudioQualityKey,
                              nil];

    NSError *error;

    recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];

    if (recorder) {
        [recorder prepareToRecord];
        recorder.meteringEnabled = YES;
        [recorder record];


    } else{
        NSLog([error description]);
    }

}
// then call periodically with the following method, volumeLevelSampling
-(void)volumeLevelSampling{

    [recorder updateMeters];
    NSLog(@"Average input: %f Peak input: %f", [recorder averagePowerForChannel:0], [recorder peakPowerForChannel:0]);


}
Run Code Online (Sandbox Code Playgroud)

它在iOS 6中运行得非常好,但它在iOS 7中没有采样任何东西.结果总是-120.

ios ios7

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