UITableView에서 선택한 행을 기반으로 채워진 UIPickerView로 UI를 설정하려고합니다. 본질적으로, 일정 응용 프로그램에서 이벤트를 추가하기 위해 시작 & 끝 화면에서 볼 수있는 것과 동일한 UI입니다.UIPickerView momentum animation을 취소 할 수 있습니까?
http://raoli.com/files/uipicker.png
나는 피커는 선택에 따라 제대로 ... 대부분의 시간을 내 모델을 업데이트 채워됩니다 그것 때문에 내 데이터 소스 및 대리인의 설정을 가지고있다.
내가 얻는 한 가지 문제점은 누군가가 픽커보기를 제빙 한 다음 선택 항목이 테이블보기에있는 경우 UIPickerViewDelegate가 원래 선택이 아닌 테이블보기에서 변경 내용을 기록하려고 시도한다는 것입니다. 그것은 분명히 내 코드에서 이런 일이 발생하고 더 나은 행동을 위해 재 작업을위한 몇 가지 아이디어가 있지만 Apple에서 UI로 수행 한 작업을 볼 수있을 것입니다.
피커를 쓸어 넘기고 피커가 회전을 완료하기 전에 시간을 전환하면 회전이 즉시 중지되고 피커가 새 유형의 값으로 업데이트되며 원래 유형의 시간은 변경되지 않습니다. 애니메이션을 취소 할 방법이 보이지 않지만 잘못 될 수 있습니다. 나는 그것이 내 인생을 더 쉽게 만들 것이기 때문에 나는 틀렸다고 희망한다.
내가 볼 수있는 다른 대안은 각 속성에 대해 다른 UIPickerViews를 사용하는 것입니다. 따라서 분명히 Apple 예제에는 2 개의 UIPickerView 인스턴스가 있습니다. 그것은 단지 완료되어야하는 다른 작업을 생성하고 최소한의 견해로 그것을 수행 할 수있는 방법이 있는지를 알 것입니다.
업데이트 아론의 아이디어는 몇 가지 약속을했다,하지만 메시지는 선택 도구가 현재 애니메이션입니다 주로 여부, 피커의 상태에 따라 대리인에게 전달받을 방법에 대한 가장자리 경우가 있습니다 것 같습니다. 피커가 현재 공개 API를 통해 회전 중인지 확인할 방법이없는 것 같기 때문에 가능한 구성을 해결하기 위해 노력하는 것이 문제가있는 것으로 보입니다. 여러 피커를 사용하고, 선택된 속성이 변경 될 때 선택기의 가시성을 전환하고, 숨겨진 UIPickerView 인스턴스의 대리자 메시지를 무시했습니다.
멋진 생각이지만, 생각하지 못했지만 불행히도 트릭을 배트에서 벗어나는 것처럼 보이지 않습니다. 'pickerView : didSelectRow : inComponent :'와 같은 모양은'row'로 전달 된 값을 가져 오는 대신 실제로 스피너에서 값을 가져옵니다. 그래서, 비록 내가 0을 전달하더라도, 내 UIPickerDelegate는'didSelectRow :'delegate 메소드를 호출 할 때 값처럼 13을 얻는다. 그러나 하위 클래스를 통해이 문제를 해결할 수있는 아이디어가 생겼습니다. 감사! – Jablair
혼란 스럽습니다 - 회 전자를 설정하려면 selectRow 또는 didSelectRow를 시도 했습니까? –
나는'selectRow : inComponent : animated'를 호출하여 회 전자를 설정했고, 다음 UIPickerView 대리자 메서드 인'pickerView : didSelectRow : inComponent :'가 호출되었습니다. – Jablair