更新应用程序和 UITextView 的问题

Posted

技术标签:

【中文标题】更新应用程序和 UITextView 的问题【英文标题】:Issue with updating app and UITextView 【发布时间】:2013-05-15 03:41:52 【问题描述】:

我有一个包含 UITextView 的应用程序。用户按下按钮,操作会更改 UITextView 上的文本。该应用程序功能齐全,现在在 AppStore 中,它是使用 ios 4.2 构建的。

无需更改任何代码。在测试为 iOS 6 构建的应用程序的新版本时。当安装在模拟器或新设备中时,应用程序不会在 UITextView 中显示任何文本。 UITextView 是空白的...但是当使用 NSLog 时,它会在日志中写入 UITextView 中有文本。

我注意到,如果设备有以前版本的应用程序,即在 AppStore 中。然后我将新版本的应用程序编译到该设备上,应用程序的功能与预期相同,按下按钮时 UITextView 会更新。

在我的 .h 文件中

#import <UIKit/UIKit.h>


@interface TimeSheetViewController : UIViewController <UITextViewDelegate>




    @property(nonatomic, retain) IBOutlet UITextView *logTextView;

在我的 .m 文件中

@synthesize logTextView;

    -(IBAction)buttonAction
       
        logTextView.text = [NSString stringWithFormat:@"%@ \n New words go here...", logTextView.text];
NSLog(@"%@", logTextView.text);
    

即使尝试从 Interface Builder 的 UITextView 设置文本也无法显示,除非在新版本编译到设备上时应用程序已经存在

【问题讨论】:

文字颜色和UITextView的背景颜色一样吗?如果它正确打印到日志中,则文本存在。 你检查nib文件中UITextView的连接了吗? @Sam 背景为蓝色,文本为黑色。这个问题很奇怪,因为如果该应用程序以前是从 AppStore 安装的,那么将新版本构建到 iPhone 上就可以了,但如果它是在 iPhone 上构建的,而 iPhone 上没有预先存在该应用程序,则它不起作用。跨度> @Divyu 我确实检查了它是否仍然连接。这个问题很奇怪,因为如果该应用程序以前是从 AppStore 安装的,那么将新版本构建到 iPhone 上就可以了,但如果它是在 iPhone 上构建的,而 iPhone 上没有预先存在该应用程序,则它不起作用。跨度> 这很奇怪..一定有什么地方出了问题,可能是你应该创建一个新的 nib 文件并重用以前文件中的视图.. 【参考方案1】:

尝试使用 textview 的 setText 方法。

[logTextView setText:@" New words go here..."];

如果它不起作用,请检查您是否已将 textView 设置为不可编辑,即禁用用户交互或 xib 文件中的类似内容(如果有)。

【讨论】:

我试过你的建议,没用。 UITextView 不可编辑,并且启用了用户交互。它不可编辑,因为我不希望用户直接输入 UITextView。这个问题很奇怪,因为如果该应用程序以前是从 AppStore 安装的,那么将新版本构建到 iPhone 上是可行的,但是如果它是在 iPhone 上构建的,而没有从 iPhone 上的 AppStore 预先存在的应用程序,它就不起作用.【参考方案2】:

这只是一半的答案,或者更准确地说不是解决方案......根据

Technical Note TN2285: Testing iOS App Updates

警告:请勿使用 Xcode 安装或运行应用更新以进行质量保证测试。

为了加快开发周期,Xcode 只推送更改的文件 进入它运行的应用程序,并且不会从现有的应用程序中删除文件 应用程序包。这使得构建速度显着加快。但这意味着 使用 Xcode 在较旧的旧版本上安装应用程序可以 “frankenbuild” 带有原本没有的遗留文件。这个可以 在测试期间引起问题并掩盖错误。

此外,使用 Xcode 运行会掩盖“看门狗崩溃” 如果升级启动时间过长,就会发生这种情况。

我相信发生的事情是,当我从 Xcode 编译我的新版本到 AppStore 版本时,一些文件被遗留在它上面......让它像预期的那样工作。

但由于从 Xcode 编译的新版本中缺少该文件,因此从未发布的未来版本应用程序的任何新安装应用程序都缺少该特定文件并且无法正常运行。

我不太确定该文件是什么,但我打算进一步研究它或构建一个新项目并将旧代码复制并粘贴到其中。

Testing Your App on Many Devices and iOS Versions

【讨论】:

【参考方案3】:

我在 viewDidLoad 方法中使用了以下代码:

int fontSizeA = [(sizeLabel.text)intValue];
logTextView2.font=[UIFont fontWithName:@"Arial" size:fontSizeA];

我遇到的问题是 sizeLabel 在 Interface Builder 中断开连接,而 viewDidLoad 方法确实在使用此代码...

int fontSizeA = [(@"sizeLabel")intValue];
logTextView2.font=[UIFont fontWithName:@"Arial" size:fontSizeA];

这表明 UITextView 中没有文本。

【讨论】:

感谢所有查看此帖子并帮助我度过难关的人。

以上是关于更新应用程序和 UITextView 的问题的主要内容,如果未能解决你的问题,请参考以下文章

iTunes Connect 促销代码和应用程​​序更新

动态更新UITextView autocapitalizationType

登录后如何更新 UITextView

UITextView 和单元格根据 textview 的内容动态更新高度?

更新行高后 UITableView 重复节标题

将图像添加到 UITextView