【问题标题】:add sound to swipe gesture recognizer为滑动手势识别器添加声音
【发布时间】:2013-05-24 17:48:10
【问题描述】:

每当用户向前或向后滑动时,我都会尝试播放声音。

我已经为我的所有UIButtons 添加了声音,IBActions 会在按下按钮时播放声音,并且没有问题。但是,当我尝试用滑动手势做同样的事情时,它不起作用。滑动手势是在情节提要中创建的,并且滑动效果很好,但是当我尝试将手势识别器连接到指定应该播放声音的 IBAction 时,它仍然会滑动但没有声音。我应该以不同的方式来实现它而不是使用 IBActions 吗?

编辑:经过进一步调查,看起来我连接到滑动手势识别器的方法从未被调用,尽管它说当我 ctrl+单击情节提要中的手势识别器时它已连接到它。我有方法连接到我的右滑动没有问题,但我似乎无法让一个正确连接到左滑动以便调用该方法。

【问题讨论】:

    标签: ios cocoa-touch


    【解决方案1】:

    尝试在主线程或延迟后播放声音。在事件线程上尝试播放声音可能会导致一些问题。尝试一个代码 A 或 B,然后告诉我会发生什么:

    代码 A:

    - (void)playAudioOnSwipe {
        // Play the audio here
    }
    
    - (IBAction) onSwipe {
        [self performSelector:@selector(playAudioOnSwipe) withObject:nil afterDelay:0.5];
    }
    

    代码 B:

    - (void)playAudioOnSwipe {
        // Play the audio here
    }
    
    - (IBAction) onSwipe {
        [self performSelectorOnMainThread:@selector(playAudioOnSwipe) withObject:nil waitUntilDone:NO];
    }
    

    【讨论】:

    • 您是否在处理滑动的函数上设置了断点,以确保它实际上是从滑动操作中调用的?
    • 我并没有完全这样做,但我确实放了一个 NSLog 来查看它是否被调用,就像我在编辑中所说的那样它不是。我想出了一个解决方法来完成这项工作。
    【解决方案2】:

    我从来没有弄清楚为什么没有调用附加到滑动的方法,但我只是做了它以便在被滑动到的页面的 viewDidLoad 中调用所需的声音;不是一个完美的解决方案,但它可以完成工作,听起来还不错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 2016-08-04
      相关资源
      最近更新 更多