我有什么 :
文本视图
NSArray(字符串)
AVAudioplayer(尚未实现)
当我在 TextView 中选择一个单词时:
• 检查单词是否存在于数组中
• 启动带有相关声音的 Audioplayer
不幸的是,当我点击两次以在 TextView 中选择一个单词时,textViewDidChangeSelection 被调用了两次。我不知道为什么我会看到两次“Youpie”。
我只是将 inputView 更改为隐藏键盘,因为我只需要在选择模式下使用 TextView。
- (void)textViewDidChangeSelection:(UITextView *)tve;
{
NSString *selectedText = [tve textInRange:tve.selectedTextRange];
if(selectedText.length > 0)
{
for (NSString *text in textArray)
{
if ([selectedText isEqualToString:text])
NSLog(@"Youpie");
tve.selectedTextRange = nil;
if (ps1.playing == YES)
{
[self stopEveryPlayer];
[self updateViewForPlayerState:ps1];
}
else if ([ps1 play])
{
[self updateViewForPlayerState:ps1];
fileName.text = [NSString stringWithFormat: @"%@ (%d ch.)", [[ps1.url relativePath] lastPathComponent], ps1.numberOfChannels, nil];
}
else
NSLog(@"Could not play %@\n", ps1.url);
break;
}
}
}
}
- (void)awakeFromNib
{
textArray = [[NSArray alloc] initWithObjects:@"dog",@"cat",@"person",@"bird",@"mouse", nil];
textView.inputView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
textView.delegate = self;
// ...
}
当我双击文本中的每个好词时,我注意到了一些东西。
textViewDidChangeSelection
如果已经选择了一个单词并且没有选择任何操作,我有 1 个“Youpie”。
如果没有,我有 2 个“Youpie”。
我找到了一个简单的解决方案。获得价值后,我删除了 selectedRange。textViewDidChangeSelection 调用一次。
我改变了什么
tve.selectedTextRange = nil;
我使用一个子类UITextView
来禁用菜单。
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
return NO;
return [super canPerformAction:action withSender:sender];
}
AVAudioPlayer
我也为(ps1)添加了一个实现。
如果选择了已知单词,我的“自动播放”正在工作:)