2017-11-21 13 views
0

힘을 얼마나 사용했는지에 따라 버튼을 눌렀을 때 3D 터치 강제 값을 사용하여 AVAudioUnitSampler의 볼륨을 변경하려고합니다.Swift 3D 터치 힘 값을 사용하여 사운드 볼륨 변경

이 힘 값

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    if let touch = touches.first { 
     print(touch.force) 
    } 
} 

문제는 내 전화에 정말 열심히 눌러 때때로 때 0.0납니다 (아이폰 7 플러스와 같은 물리적 장치를 사용) 것입니다을 얻을 내 현재 코드입니다. 때로는 0.0보다 큰 것을 얻지 만, 정말로 힘을 주어 0.0을 얻으면 문제가됩니다.

나는 이것을하기위한 좋은 방법을 얻으려고 노력하고 있거나 더 좋은 방법이 있습니까?

답변

1

일반적으로 제스처 인식기를 사용하기가 더 쉽지만 UIResponder 터치 메소드를 계속 사용할 수 있습니다. 그러나 잘못된 것을 사용하고 있습니다. touchesBegan은 힘이 0 또는 그 근처에있을 가능성이 매우 높을 때만 터치 시작시 힘을줍니다. 전체 접촉을 통해 업데이트를 받아야하므로 touchesMoved이 필요합니다. 물론 터치가 너무 많이 움직 였는지 또는 압력이 바뀌 었는지를 결정해야합니다. 따라서 사용하기가 더 편리합니다. UILongPressGestureRecognizer; 그것은 당신을 위해 이것을합니다.