2010-01-13 29 views
15

Tôi có một UISegmentedControl có sáu phân đoạn, tôi muốn họ gọi một phương thức khi giá trị thay đổi, nhưng cũng khi mỗi phân đoạn nhận được UIControlEventTouchDragIn vì tôi muốn một UILabel hiển thị tên của nó khi người đang cố gắng chọn một cái gì đó trên đó và kéo ngón tay của họ trên toàn bộ điều khiển, nhưng điều khiển phân đoạn không gọi cho cuộc gọi này ngay cả khi tôi kéo vào vật đó. Hãy giúp tôi. Có lẽ tôi cần phải tạo UIButtons trên điều khiển mà các phương thức gọi khi kéo vào, nhưng gọi phương thức thay đổi giá trị khi chúng nhận được một lần nhấn.UISegmentedControl delegate/Touch Events

Trả lời

-6

Bạn chỉ có thể phân lớp UISegmentedControl và ghi đè phương pháp - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { return; } để quản lý việc kéo và vị trí của các lần chạm.

Tuy nhiên, bạn sẽ không thể biết phân đoạn nào đang kéo, có thể bạn nên thực hiện mọi việc theo cách thủ công bằng cách chạm và theo dõi nó bằng các chức năng đó.

+1

Tôi ước họ đã thực hiện việc này dễ dàng hơn. THỰC SỰ TÔI LÀM!! – Jaba

33

Có lẽ tôi không hiểu câu hỏi của bạn một cách chính xác nhưng có thể không phải bạn chỉ cần sử dụng này:

[segmentedControl addTarget:self 
     action:@selector(action:) 
     forControlEvents:UIControlEventValueChanged]; 

và chỉ cần thay thế các UIControlEventValueChanged bởi UIControlEventTouchDragIn? Sau đó, trong phương pháp hành động của bạn làm bất cứ điều gì cần phải được thực hiện như thay đổi văn bản của một UILabel.

Tôi có một UITAbleView với một loạt các ô và UISegmentedControll trong mỗi ô và nó hoạt động tốt cho tôi.

Tài liệu cho UISegmentedControl dường như không khả dụng trực tuyến nhưng bạn có thể thấy nó trong Trình tổ chức của XCode và mã ở trên là ví dụ đầu tiên.

Các vấn đề liên quan