2011-08-27 27 views
5

Khi tôi thêm thanh trượt của tôi như subview của bất kỳ xem bên cạnh self.view nó không hoạt động (không trượt) nhưng nó hoạt động tốt khi nó là một phần phụ của self.view. Bạn có thể thấy nó trên các chế độ xem khác ngoài self.view nhưng nó không hoạt động.UISlider sẽ không hoạt động khi nó trở thành một subview của một UIView self.view khác

Đây là mã của tôi:

alphaSlider = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, 90, 10)]; 
    [alphaSlider setMinimumValue:0.01]; 
    [alphaSlider setMaximumValue:1]; 
    [alphaSlider setValue:0.5]; 
    [alphaSlider setUserInteractionEnabled:YES]; 
    [alphaSlider addTarget:self action:@selector(alphaSliderDidChange:) forControlEvents:UIControlEventValueChanged]; 
    alphaSlider.continuous = YES; 
[submenu addSubview:alphaSlider]; 

Bất kỳ cách nào để sửa lỗi này?

Trả lời

9

Có thể menu phụ không được bật cho tương tác của người dùng.

[submenu setUserInteractionEnabled:YES]; 

khả năng khác là khung của thanh trượt nằm ngoài submenu.frame

Kể từ khi clipsToBounds tài sản của UIViews là theo mặc định NO, thanh trượt sẽ không được cắt bớt mặc dù là bên ngoài của khung menu con của. Điều này có nghĩa là khung của menu con không bao gồm thanh trượt và không có cách nào để chuyển các sự kiện chạm từ menu phụ sang thanh trượt của menu phụ. Đặt màu nền của menu phụ và xác nhận rằng thanh trượt được đặt hoàn toàn trong khung của menu phụ.

[submenu setBackgroundColor:[UIColor blueColor]]; 

Khung của trình đơn có thể giống như (0, 0, 0, 0).

Bao gồm

NSLog(@"%f, %f, %f, %f", submenu.frame.origin.x, submenu.frame.origin.y, submenu.frame.size.width, submenu.frame.size.height); 

Bạn cũng có thể làm

[submenu setClipsToBounds:YES]; 

và nếu con trượt biến mất, sau đó khung menu con là xấu.

6

Kiểm tra chiều cao khung của thanh trượt không quá nhỏ để cho phép tương tác. 10 pt có lẽ là quá nhỏ.

Bắt đầu từ iOS 8, thanh trượt của tôi cũng ngừng hoạt động.

Trong quá khứ, chiều cao khung của UIViews như UISlider, UISwitch và UIPickerView đã được cố định với một số giá trị được xác định trước. Bạn có thể thiết lập chiều cao khung hình, nhưng nó sẽ bị bỏ qua. Thay vì cố nhớ, "Chiều cao của UISlider trong Cảnh quan trên iPad/iPhone là bao nhiêu?", Tôi đã đặt chiều cao là 0 và để cho hệ điều hành gán giá trị mặc định.

Câu trả lời David Braun's dẫn tôi nhận ra rằng khung UISlider của tôi có chiều cao 0 đã vô hiệu hóa tương tác của người dùng.

+0

Không bao giờ nghĩ đến việc tự kiểm tra kích thước khung hình. +1 – oarfish

+0

Thanks..Trong trường hợp trượt của tôi là bên trong stackview đã gây ra vấn đề. Chỉ cần thêm giới hạn chiều cao, ôm và giá trị kháng nén cho thanh trượt và nó hoạt động. – niks

-1

Tôi gặp sự cố tương tự, trong đó thanh trượt không có đường ngang, chỉ cần nút màu trắng và không phản hồi chút nào. Dựa trên những điều trên, tôi nhận ra rằng thanh trượt của tôi rộng hơn vùng an toàn của tôi. Đặt một số ràng buộc trên 2 mặt, và bây giờ nó hoạt động tốt.

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