【问题标题】:Old School Feel text appearing one letter at a time issueOld School Feel 文本一次出现一个字母的问题
【发布时间】:2013-03-17 19:36:01
【问题描述】:

好吧,正如标题所说,我正在尝试创建一个老式的应用程序。我的意思是计算机编程为绿色,黑色,文本(编程)(如终端/Windows程序输入),我试图让我的字符串一次显示在屏幕上一个字母。 所以我决定尝试一个例子,这是我的代码,任何建议都会很棒! :)

    instructionsArray = [[NSMutableArray alloc] initWithObjects: nil];
    instructionsString = @"Lorem ipsum dolor sit er elit lamet, ...";

  for (int i = 1 ; i <= [instructionsString length]; i++) {
    [instructionsArray addObject:@"%@", [NSString stringWithFormat:[instructionsString characterAtIndex:i]]];
}

所以基本上我有这个示例字符串; instructionsString(它只是一个 NSString)和这个 MutableArray。我认为将字符串转换为字符到数组中,然后使用 NSTimer 显示数组中的每个项目是最简单的,任何更简单更好的方法都将不胜感激!

谢谢

编辑:谢谢 Hypercube 我将代码更改为:

            [Instructions.text stringByAppendingString:[remainingBuffer subStringWithRange: NSmakeRange(1, remainingBuffer.length - 1)]];

但是,我仍然收到此错误和警告: “NSString”没有可见的@interface 声明选择器“subStringWithRange” 并且警告“NSmakeRange”对 C99 无效

任何帮助将不胜感激谢谢:)

【问题讨论】:

  • 仅使用xcode 标签来回答有关 IDE 本身的问题。谢谢!
  • 你的宏应该命名为 NSMakeRange。

标签: iphone ios nstimer


【解决方案1】:

这很奇怪,因为就像一周前一样,我写了一些东西来在视觉上模拟点阵打印机,它面临着同样的问题。

我会完全忘记字符数组,因为无论如何这就是字符串,只保留一个NSString remainingBuffer 对象。每当 NSTimer 说是时候打印一个字符时,如果缓冲区不为空,则从中读取第一个字符,打印该字符,然后从缓冲区中删除第一个字符,如下所示:

remainingBuffer = [remainingBuffer subStringWithRange: NSmakeRange(1, remainingBuffer.length - 1)];

如果 NSString 设计正确,则不应为文本分配任何新数据,而只返回一个 NSString,其指向其字符数组的内部指针比旧字符串大一个字符长度。

当您需要告诉控制台打印某些内容时,只需附加到 remainingBuffer

编码愉快!

【讨论】:

  • 非常感谢,但是,当我尝试输入此内容时...(当然已正确分配了 NSString 剩余缓冲区)我收到错误:“NSString”没有可见的@interface 声明选择器'subStringWithRange' 和警告 'NSmakeRange' 对于 C99 无效,代码如下:[Instructions.text stringByAppendingString:[remainingBuffer subStringWithRange: NSmakeRange(1, remainingBuffer.length - 1)]];我做错什么了吗? :P 我刚刚创建了我的字符串 = 剩余缓冲区,然后输入你的字符串。
  • 我可能弄错了大小写。它很容易成为substringWithRange:NSMakeRange。你必须检查文档 - 我正在记忆中工作,因为我正在用手机接听
  • 编辑:我的错,错误是我忘记了大约 1/2 的代码。它有效,但它只是将所有文本放在一个:/但谢谢!
猜你喜欢
  • 2014-07-06
  • 1970-01-01
  • 2011-02-12
  • 2016-03-19
  • 2010-11-25
  • 2016-05-22
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
相关资源
最近更新 更多