小编n.e*_*ind的帖子

如何在UITextView中实现简单的"实时"字数

我正在尝试在用户输入文本时实现UITextView的简单字符数(即它应该连续更新).

我有两个问题.

(1)首先是我不知道我应该在哪种方法中使用charCount方法.textViewShouldBeginEditing不起作用,因为它只是询问编辑会话是否应该开始.textView:shouldChangeTextInRange也不起作用,因为它再次询问是否允许开始编辑.我在Apple doc中找不到其他有用的方法.

(2)下一个问题:我试图从另一个方法中调用我的charCount方法.但是我得到了编译错误:'ViewController'可能无法响应'charCount'.

这是我的谦卑尝试:

- (IBAction)charCount:(id)sender {

// all chars
int charsAsInt = (int)(textView.text.length);
NSString *newText = [[NSString alloc] initWithFormat:@"All chars: %d", charsAsInt];
allCharacters.text = newText;
[newText release];}

- (BOOL)textViewShouldBeginEditing:(UITextView *)aTextView {

    [self charCount];}
Run Code Online (Sandbox Code Playgroud)

我想这与我试图调用IBAction定义的方法有关,这不起作用.但是,在非IBAction方法中调用IBAction方法的正确方法是什么?

一如既往,我很抱歉这些非常基本的问题,我非常感谢每一个小小的帮助,让我的初学者能够理解这一点.

iphone cocoa-touch objective-c uitextview

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

为什么iCloud有时会停止工作?

我有时打开存储在iCloud上的UIDocuments有问题.在检查iCloud是否可用并获取NSMetaDataQuery的结果后,我在应用程序的最开始时调用以下代码.这适用于所有情况的98%.有时(例如有时在重新安装应用程序之后),永远不会调用completionHandler:

FRNBDocument *doc = [[FRNBDocument alloc] initWithFileURL:fileURL];
[doc openWithCompletionHandler:^(BOOL success) {

    NSLog(@"... doc: openedWithCompletionHandler");
Run Code Online (Sandbox Code Playgroud)

正如你从代码中看到的那样,我正在初始化一个新的UIDocument实例(FRNBDocument),所以它不能是旧的UIDocument仍然打开的情况,因此这个无法打开.

让应用程序再次运行的唯一方法是杀死它,然后转到settings.app> iCloud> Documents&Data并将其关闭然后再将其打开.当我回到应用程序时,UIDocs将被加载没有问题.

我注意到其他应用程序(例如xTrail by sophiestication)有同样的问题,我只能在完成上述技巧后再次运行它们.

到底是怎么回事?

iphone ios icloud uidocument

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

iBooks App如何在单独的页面上格式化文本?

看看iBooks应用程序,我想知道如何完成格式化文本(可能是一个非常简单的txt文件),这样它就不可滚动,而是分成不同的页面.

我想实现相同的目标,但只能使用可编辑的文本.

我需要从哪里开始?UITextView在滚动时不起作用.即使我将pagingEnabled属性设置为YES,它也不会执行该任务.

似乎我需要限制我可以放在某个页面上的文本数量.是否有一个限制UITextView输入的功能?我需要限制LINES(不是字符)的数量,因为它们将显示在完整的iPhone屏幕上(我猜你可以适应20行左右,具体取决于字体大小).

任何帮助,将不胜感激!由于我是初学者,我特别欣赏使用类似方法的样本.

谢谢!

iphone sdk uiwebview uitextview ibooks

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

检查NSMutableArray中是否存在某些内容

我有一个NSMutableArray可以容纳几个对象.我想检查是否存在对象,如果存在,则更改它.我想知道检查它.我认为这会奏效:

if ([[[self.myLibrary objectAtIndex:1] subObject] objectAtIndex:1]) // do something
Run Code Online (Sandbox Code Playgroud)

但是,如果索引1处没有任何子对象,则会崩溃.所以我猜问题是如果此索引中没有任何内容,则上述内容不会返回nil.

还有另一种简单的检查方法,还是我必须通过数组等计算?我知道stackoverflow上还有其他帖子,但我还没有找到一个简单的答案.

欢迎任何解释/建议.谢谢!

iphone cocoa-touch objective-c nsmutablearray

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

直接上传到S3或通过EC2?

我想为iPhone应用程序构建一个Web服务.至于文件上传,我想知道标准程序和最具成本效益的解决方案是什么.据我所知,有两种可能性:

  1. 客户端> S3:我直接从iPhone上传文件到S3(使用AWS SDK)
  2. 客户端> EC2> S3:我将文件上传到我的服务器(EC2上运行的Django),然后服务器上传文件到S3(详见该职位)

我不打算以任何方式修改文件.我只需要告诉数据库添加一个条目.因此,如果我要上传文件Client> S3,我还是需要连接到服务器才能进行数据库输入.

似乎 EC2> S3不会花费任何东西,只要两者在同一区域.

在开始实施文件上传之前,我很想知道优点和缺点.

django amazon-s3 amazon-ec2 amazon-web-services

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

iPhone开发的页面卷曲和转动效果

我正在寻找一个非常简单的翻页效果,类似于iBooks中的那个更简单.如果用户滑动屏幕,我只需要转动页面(所以没有难以"抓住"页面动画等 - 只是一个动画).实际上,我需要的只是以下内容,除了它不应该是CurlDown或CurlUp,而是从左侧到右侧,反之亦然:

[UIView setAnimationTransition:
         UIViewAnimationTransitionCurlDown
                               forView:self.view cache:YES];
Run Code Online (Sandbox Code Playgroud)

我浏览了一下有几个关于如何进行更高级页面翻转的教程:


对于iOS 5:只需使用UIPageViewController(参见下面的编辑)

对于iPad:页面卷曲 - 看起来完美和美丽,但非常先进

对于iPad:页面卷曲 - 正确的方向,但不是那么美丽

对于iPhone:花式'透明'卷曲(像iBooks) - 私人API虽然(?)

解构经典中的效果:经典应用


我想可能会有更多的教程和示例代码,我想知道我们是否可以通过一些描述来收集它们.当然,我特别喜欢这种非常简单的翻页效果UIViewAnimationTransitionCurlDown/Up,只是它从右到左而不是从顶部到顶部.

使用渐变叠加和一点二维动画可以轻松实现简单的翻页效果吗?或者这就是"叶子"项目的全部内容?感谢您对清单的澄清和更新.


编辑:

使用iOS 5,您现在可以轻松添加iBooks,如翻页效果.只需打开一个新项目并选择基于页面的应用程序(您需要运行xCode 4.2和iOS 5).

iphone cocoa-touch curl ibooks uiviewanimation

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

不区分大小写的NSString后缀检查

我想检查一个字符串是否有一个特定的后缀,但是想做一个不区分大小写的检查.我需要一个替代方案:

if ([selectedFile hasSuffix:@"jpg"] ||
    [selectedFile hasSuffix:@"JPG"]) 
Run Code Online (Sandbox Code Playgroud)

或jPg,jpG,Jpg.有没有简短的方法来做到这一点?caseInsensitiveCompare:在这种情况下,我不知道如何申请.

compare objective-c nsstring

9
推荐指数
2
解决办法
5800
查看次数

objective-c:将日期字符串转换为星期几+月份名称

一个初学者的问题,但我想知道是否有人可以帮我这个:

我需要根据包含特定日期的字符串设置四个字符串(例如@"2011年4月7日"):

  • 一个字符串,它将采用星期几(缩写:周一,周二,周三,周四,周五,周六,周日):例如 @"Thu"
  • 一个需要一天的字符串,例如 @"7"
  • 一个字符串,将需要一个月,例如 @"April"
  • 和一个需要一年的字符串,例如 @"2011"

到目前为止,我发现了这个:

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];

NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:118800];

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:usLocale];

NSLog(@"Date for locale %@: %@",
      [[dateFormatter locale] localeIdentifier], [dateFormatter stringFromDate:date]);
// Output:
// Date for locale en_US: Jan 2, 2001
Run Code Online (Sandbox Code Playgroud)

所以这会给我一个特定的格式化日期.然而,我想知道如何访问这个日期的某些部分.有 - (NSArray*)weekdaySymbols但我不知道如何使用这个,文档非常节俭.

日历专家提供的任何提示都将非常受欢迎.


编辑:

我想这是解决方案的一部分:

    NSLocale *gbLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
NSString *gbFormatString = [NSDateFormatter dateFormatFromTemplate:@"EdMMM" options:0 locale:gbLocale];
NSLog(@"gbFormatterString: %@", gbFormatString);
// Output: gbFormatterString: EEE …
Run Code Online (Sandbox Code Playgroud)

iphone datetime cocoa-touch objective-c

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

iCloud:我可以忽略那些禁用iCloud的人吗?

我对iCloud的想法有点挣扎,并在这里发布了一个更普遍的问题.我最大的问题是决定是否应该停止将用户的数据放在应用程序沙箱中的旧文档文件夹中.为了说明我的问题:

在此输入图像描述

文档没有给出答案,据我所看到的.假设我有一个处理不同txt文件的应用程序.一旦我启动我的应用程序,我只需检查是否有任何txt文件在云中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSLog(@"AppDelegate: app did finish launching");
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];

    // (1) iCloud: init

    NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
    if (ubiq) {
        NSLog(@"User has iCloud enabled! Let's get the txt files from the cloud.");
        [self loadDocument];
    } else {
        NSLog(@"User doesn't have iCloud enabled. App is thus worthless.");
    }


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

然后我有一个方法来检查云中是否有任何txt文件,如果有,请加载它们.如果没有,我只是在云中创建新的txt文件.

这意味着应用程序不会在文档文件夹中存储任何数据.据我了解,一切都在我的设备的本地iCloud存储(如果用户脱机也可访问)或云端.所以文本文件存在于两个地方:在我的设备和云上.

所以根本不需要在我的本地文档文件夹中存储第三个副本,对吧?或者这是因为我忽略了某些原因而必不可少的?换句话说,如果我向用户提供iCloud,我应该使用本地文档文件夹?(我可以简单地忽略那些不会注册iCloud的人吗?)


编辑:只是为了澄清,当我在谈论应用程序的沙箱中的标准文档文件夹时,我的意思是:

NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch ipad ios icloud

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

NSKeyedUnarchiver - 如何防止崩溃

我想这很明显,但我有一个关于加载数据的问题.如果有一个名为library.dat的文件,它存储有关应用程序中对象的所有类型的信息.它设置得很好(就initWithCoder和encodeWithCoder方法等而言),但我只是想知道如果library.dat被破坏会发生什么.我自己损坏了一点,然后应用程序崩溃了.有没有办法防止崩溃?我可以在加载前测试文件吗?这是可能非常致命的一点:

    -(void)loadLibraryDat {

    NSLog(@"loadLibraryDat...");
    NSString *filePath = [[self documentsDirectory] stringByAppendingPathComponent:@"library.dat"];

    // if the app crashes here, there is no way for the user to get the app running- except by deleting and re-installing it...
    self.libraryDat = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];



}
Run Code Online (Sandbox Code Playgroud)

我看了一下*NSInvalidUnarchiveOperationException,但不知道我应该如何在我的代码中实现它.我会感激任何例子.提前致谢!

iphone cocoa-touch objective-c nskeyedarchiver ios

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