-->

我可以禁用UIPickerView滚动的声音?(Can I disable UIPickerView

2019-07-18 11:13发布

我想禁用恼人的点击次数UIPickerView产生在向上和向下滚动。 有没有办法做到这一点? 我想打短的声音为选择器视图的土地在每个项目。 它得到通过内置的声音糟蹋了。

据我所知,拾取的声音可以通过关闭键盘的声音在iPhone / iPod设置全局关闭。 但是,有没有办法以编程方式做到这一点?

任何帮助都感激不尽!

谢谢

Answer 1:

在App Store上使用这个特定的未公开的API了一年多后,苹果最终让我从我的应用程序中删除。 这是非常令人沮丧的音频应用有那个该死的咔嚓声。 最好的建议是与用户的选择器的声音可以在全球范围内的设置应用程序下的“声音”,并设置“键盘敲击声”到“关”禁用共享。 我也强烈建议您访问https://bugreport.apple.com/并记录缺陷的UIPickerView,当拾取器点击播放它可能会导致音频应用中的失真。



Answer 2:

我一直在挣扎一个UIPickerView声音发出,即使它只是原来的问题部分相关的,我在这里张贴问题/解决方案,因为这个话题一直即将在我的搜索结果,所以我认为任何人在同一船可以在这里结束了太多...

我需要初始化一个UIPickerView从保存的数据恢复当前所选行。 简单吧? 在viewDidLoad中,只需调用selectRow:inComponent:UIPickerView的动画方法:

[myPicker selectRow:currentRowIndex inComponent:0 animated:NO];

这正常工作,但它产生一个单一的“咔嗒”声,就好像用户已经滚动控制的副作用。 卡嗒声仅一个装置(未模拟器)上运行时,并且仅当该设备已安装的iOS 3.X(I与3.1.3和3.2测试)时发生。 这显然是在固定开始与iOS 4.0的iOS的错误。 但是,如果你需要针对第一代iPhone,你坚持的iOS 3.1.3哪里这个问题是存在的。

我所讨论的问题与苹果DTS,但他们无法提出比升级到4.0以外的任何解决办法。 我问他们是否会破例允许使用无证的上述setSoundsEnabled提到的(它实际上解决这个问题)。 答案是,“没有例外”。

经过一些额外的侦查工作,我发现,您可以防止声音从临时从上海华去除UIPickerView发生,请致电selectRow,然后将其重新添加到上海华。 例如,在viewDidLoad中:

UIView *superview = [myPicker superview];
[myPicker removeFromSuperview];

[myPicker reloadAllComponents];
[myPicker selectRow:currentRowIndex inComponent:0 animated:NO];

[superview addSubview:myPicker];

这摆脱了多余的咔嗒声,而无需使用无证/私人的API所以要经过苹果的审批程序。



Answer 3:

他们刚刚拒绝了我的一个应用程序,因为使用无证的API的......这就是其中之一。



Answer 4:

我认识的人说,他上周刚刚得到这个过去在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);
}


Answer 5:

有一个无证的方式(实际上,我不知道,如果它仍然在iPhone 3.0中提供),但在这里它是任何方式

#import <UIKit/UIKit.h>

@interface SilintUIPickerView: UIPickerView
{ }

- (void) setSoundsEnabled: (BOOL) enabled;
@end

使用此子类,而不是与呼叫[view setSoundsEnabled: NO]

我想知道它是如何在最新的SDK,给它一个镜头,让我们知道。



Answer 6:

难道这招工作? 有人能够通过在同一时刻播放声音的反转副本来抑制相机快门的声音效果: https://stackoverflow.com/a/23758876/214070



Answer 7:

也许这不是问题的答案对于这个特定的问题,但我也有类似的问题 - 设置为minimumDate日期选择,我想将它没有恼人的“咔嚓”声。 一段时间后,发现很简单的解决方案:

datePickerCustomTime.minimumDate = [[NSDate date] dateByAddingTimeInterval:300]// min time to set = now + 5 min
  [datePickerCustomTime setDate:[[NSDate date] dateByAddingTimeInterval:300] animated:NO];


Answer 8:

我发现小匆匆解决这个试试下面

        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];

设置动画:NO为selectRow:方法



文章来源: Can I disable UIPickerView scroll sound?