今天早些时候我试图在我的应用程序中获取一些文本来自动滚动当前正在播放的歌曲的歌词,我得到了一个答案,使用animateWithDuration方法使滚动正常工作。它非常有效,直到我注意到当我使用下面的代码时,有些东西覆盖了与textView背景颜色相同的80%的textView。当我在覆盖的区域(在模拟器和我的测试设备上)上滑动时,框(或其他任何东西)消失,所有文本显示为正常。我知道这是animateWithDuration的方法调用,因为我对它进行了注释,并且当我构建并运行未包含在项目中的文本时,文本未被覆盖。此外,我进入Interface Builder并将textView的颜色更改为白色(它是黑色以及视图中其他所有内容的背景),以查看覆盖它的内容是否也具有黑色背景。当我将其更改为白色时,文本仍被覆盖,这次是白色方框。再一次,这是我第一次取消隐藏textView并用歌词填充它。在我滑过覆盖区域后,我播放障碍物的任何歌曲都没有出现。只是最初的时间,直到它被删除。这是我正在使用的代码...
// set the textView to start at the top of the document
[textView setContentOffset:CGPointZero];
CGPoint scrollPoint = textView.contentOffset;
// set the scroll point to the length of the text view, so it knows how far down to go
scrollPoint.y= [textView.text length];
以下是导致文本被覆盖的原因
`// animate down to that point at the rate of the length of the song minus 20 seconds (so the lyrics can catch up to the song)
[UIView animateWithDuration:(self.myMusicPlayer.duration - 20)
delay:0
options:UIViewAnimationOptionAllowUserInteraction
animations:^(void) {self.textView.contentOffset = scrollPoint;}
completion:nil];`
这是拍摄盒装区域之前和之后的照片。
任何人都知道什么是文本或我可以做些什么来摆脱它?或者另一种方法我可以使用除animateWithDuration之外的其他方法自动滚动歌词?
这是我用来用歌词填充textView的代码。
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { // determine which row was clicked
NSUInteger row = [indexPath row];
// get the song name from the array at the position clicked
NSString *rowString = [songNames objectAtIndex:row];
// load the lyrics for the song played into the textView
// load the text file for the song selected
NSString *lyrics = [[NSBundle mainBundle] pathForResource:rowString ofType:@"txt"];
NSString *fileContents = [NSString stringWithContentsOfFile:lyrics];
// set the textView to load the lyric sheet for the song selected
self.textView.text = fileContents; // more after this, but this is all that I'm doing with the textView
编辑:好吧,我已经解决了覆盖文字的黑匣子的问题,虽然我不明白。虽然我正在格式化文本文件以便更好地使用歌词,但我的回车以及断行符号会导致文本被覆盖。我删除了文本文件的内容并重新粘贴了原文,导致没有任何文本被覆盖。所以现在我想我的任务是弄清楚如何格式化文本文件中的文本而不会覆盖文本。有什么建议吗?
答案 0 :(得分:0)
显然,文本文档存储在应用程序中的某个位置,因为我删除了资源文件夹中的所有文本文件,并且仍然显示了歌词的文本。我猜它是使用存储的文本文件的大小,因为我把文本文件缩小了(通过删除双倍行间距的行),是问题的来源。我按照我想要的格式化它,并添加一堆回车在我的文本文件的末尾返回,现在工作正常。