2016-12-07 1 views
0

세 개의 버튼이있는보기가 있습니다.버튼을 눌렀을 때 하나의 기능을 호출하고 출시 될 때 다른 기능을 호출하는 버튼은 무엇입니까?

하나의 버튼이 오디오 녹음을 시작하고 다른 버튼이 오디오 녹음을 중지하고 세 번째 버튼이 녹음 된 오디오를 재생합니다.

레코드 시작을 압축하고 하나의 단추로 중지하여 레코드를 눌렀지만 해제 할 때 레코드가 중지되도록합니다.

한 번의 버튼으로 두 개의 이벤트를 사용하여 녹화를 시작한 다음 한 번 터치하여 중지 시키려고 시도했지만 제대로 작동하지 않는 것 같습니다.

답변

0

UIButton을 사용하는 대신 뷰를 만들고 원하는 단추 모양으로 스타일을 지정해야합니다.

그런 다음 원하는대로 기능을 제공하기 위해 끝난 방법을 시작한 &으로 시작했습니다.

이 특별한 경우에 사용할 수있는 사용자 지정보기 클래스를 만듭니다.

다음 코드는 스위프트 3.0입니다 :

class TouchView : UIView { 
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
     super.touchesBegan(touches, with: event) 

     // Start recording 
    } 

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 
     super.touchesEnded(touches, with: event) 

     // End recording 
    } 
} 
0

이있는 당신이 UILongPressGestureRecognizer을 첨부하는있는 UIButton를 사용합니다. 인식기가 사용자가보기에서 손가락을 누르고 있다고 결정하면 .began 메시지가 표시되고 손가락을 떼면 .ended 메시지가 나타납니다. 버튼의 isSelected을 "작동 중지"상태로 설정합니다.

@IBAction func doPress(_ sender: UILongPressGestureRecognizer) { 
    switch sender.state { 
    case .began: 
     (sender.view as! UIControl).isSelected = true 
     // start recording 
    case .ended: 
     (sender.view as! UIControl).isSelected = false 
     // stop recording 
    default: break 
    } 
} 
관련 문제