我想禁用UIPickerView在向上或向下滚动时生成的讨厌的点击声。有没有办法做到这一点?我想为选择器视图落在每个项目上播放短声音,但内置声音会破坏它。
我知道可以通过在iPhone/iPod设置中关闭键盘声音来全局关闭选择器声音。但是否有一种编程方式可以实现这一点?
非常感谢任何帮助!
谢谢
我想禁用UIPickerView在向上或向下滚动时生成的讨厌的点击声。有没有办法做到这一点?我想为选择器视图落在每个项目上播放短声音,但内置声音会破坏它。
我知道可以通过在iPhone/iPod设置中关闭键盘声音来全局关闭选择器声音。但是否有一种编程方式可以实现这一点?
非常感谢任何帮助!
谢谢
我一直在处理一个UIPickerView声音问题,虽然这只是部分与原始问题相关,但我发布问题/解决方案在这里,因为这个主题仍然出现在我的搜索结果中,所以我认为任何处于同样困境的人可能也会来到这里...
我需要初始化一个UIPickerView来从保存的数据中恢复当前选定的行。简单吧?在viewDidLoad中,只需调用UIPickerView的selectRow:inComponent:animated方法:
[myPicker selectRow:currentRowIndex inComponent:0 animated:NO];
UIView *superview = [myPicker superview];
[myPicker removeFromSuperview];
[myPicker reloadAllComponents];
[myPicker selectRow:currentRowIndex inComponent:0 animated:NO];
[superview addSubview:myPicker];
在App Store上使用这个特定的未公开API已经一年了,但最终苹果还是要求我将其从我的应用中删除。对于音频应用程序来说,那该死的点击声非常令人沮丧。最好的建议是与用户分享,在“设置”应用程序下可以全局禁用选择器音效,只需将“键盘点击”设置为“关闭”。我还强烈建议访问https://bugreport.apple.com/并为UIPickerView提交错误报告,因为当播放选择器的点击声时,它可能会导致音频应用程序出现失真。
我认识的某人说他上周通过了App Store审核:
// Hide private API call from Apple static analyzer
SEL sse = NSSelectorFromString([NSString stringWithFormat:@"%@%@%@", @"set",@"Sounds",@"Enabled:"]);
if ([UIPickerView instancesRespondToSelector:sse]) {
IMP sseimp = [UIPickerView instanceMethodForSelector:sse];
sseimp(self.thePicker, sse, NO);
}
datePickerCustomTime.minimumDate = [[NSDate date] dateByAddingTimeInterval:300]// min time to set = now + 5 min
[datePickerCustomTime setDate:[[NSDate date] dateByAddingTimeInterval:300] animated:NO];
NSDate *minimumDate = [[NSDate date] dateByAddingTimeInterval:300]; if ([datePickerCustomTime.date laterDate:minimumDate] == minimumDate) { [datePickerCustomTime setDate:minimumDate animated:NO]; } datePickerCustomTime.minimumDate = minimumDate;
- hlfcoding有一种未记录的方法(我实际上不确定它是否仍然适用于iPhone 3.0),但无论如何,这里是它。
#import <UIKit/UIKit.h>
@interface SilintUIPickerView: UIPickerView
{ }
- (void) setSoundsEnabled: (BOOL) enabled;
@end
使用这个子类替代,并调用[view setSoundsEnabled: NO]
我对最新的SDK是如何进行的很感兴趣,试一试并告诉我们。
UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, yPickerView, VIEW_WIDTH, PICKERVIEW_HEIGHT)];
pickerView.delegate = self;
pickerView.dataSource = self;
pickerView.showsSelectionIndicator = YES;
pickerView.alpha = 0.8f;
pickerView.tag = fieldTag;
[pickerView selectRow:pickerViewSelectedIndex inComponent:0 animated:NO];
为selectRow:方法设置animated:NO