2010-05-12 5 views
13

tôi đã thiết UISlider của tôi lên để đáp ứng với giá trị thay đổi sự kiện:Có lửa UIControlEventValueChanged khi UISlider đang hoạt hình?

[customSlider addTarget:self action:@selector(sliderMove:) forControlEvents:UIControlEventValueChanged]; 
[customSlider addTarget:self action:@selector(sliderStart:) forControlEvents:UIControlEventTouchDown]; 
[customSlider addTarget:self action:@selector(sliderEnd:) forControlEvents:UIControlEventTouchUpInside]; 

Tôi muốn animate thanh trượt đến vị trí mà người dùng còn lại nó lần cuối cùng quan điểm đã được sử dụng. Tôi làm điều này với:

[customSlider setValue:position animated:YES]; 

Tất cả mọi thứ hoạt động tốt, ngoại trừ, tôi đã xây dựng một "tag" được treo trên thanh trượt "núm" vì vậy người dùng có thể nhìn thấy giá trị khi di chuyển thanh trượt. Vị trí của "thẻ" được đặt khi UIControlEventValueChanged gọi phương thức "sliderMove".

Khi sử dụng thanh trượt [slider setValue:position animated:YES], nhưng sự kiện không kích hoạt.

Có đại biểu nào tôi có thể truy cập hoặc sự kiện bao gồm kịch bản này không?

Nhờ sự giúp đỡ cho :)

Trả lời

26

Âm thanh như một lỗi, hãy thử để workaround này bằng cách gọi

[slider sendActionsForControlEvents:UIControlEventValueChanged]; 

ngay sau khi bạn thiết lập giá trị theo chương trình.

+0

Xin chào ChriB và Cảm ơn :) Gửi hành động theo cách thủ công đã buộc nó phản hồi và hành xử như nó phải không? Tôi thực sự không nghĩ rằng nó sẽ gọi phương thức đại biểu trong quá trình hoạt hình. Có cách nào kiểm soát tốc độ của hoạt ảnh, như trong UIAnimation, khi thực hiện [slider setValue: 14 animated: YES], nếu tôi có thể thêm một câu hỏi :) – RickiG

+0

Đừng nghĩ rằng có một cách để thay đổi điều đó. Bạn nên hỏi câu hỏi này như một câu hỏi mới, có thể một người khác biết. :) – bddckr