Thiết lập userInteractionEnabled
tài sản của UILabel
để YES
sửa chữa các vấn đề nổi bật, nhưng nó cũng vô hiệu hóa UIPickerView
từ autoscrolling để chọn hàng đó đã được chạm vào.
Nếu bạn muốn vô hiệu hóa hành vi làm nổi bật, nhưng duy trì chức năng tự động kiểm tra mặc định của UIPickerView
, hãy gọi hàm setShowSelection
trong các trường hợp UITableCell
có trong UIPickerView
. Một cách để làm điều này là để phân lớp lớp UILabel
tương tự như sau:
PickerViewLabel.h -
#import <UIKit/UIKit.h>
@interface PickerViewLabel:UILabel
{
}
@end
PickerViewLabel.m -
#import "PickerViewLabel.h"
@implementation PickerViewLabel
- (void)didMoveToSuperview
{
if ([[self superview] respondsToSelector:@selector(setShowSelection:)])
{
[[self superview] performSelector:@selector(setShowSelection:) withObject:NO];
}
}
@end
Sau đó, nơi bạn trước đây đã được trở về một thể hiện của UILabel
trong pickerView:viewForRow:forComponent:reusingView:
, trở về một thể hiện của PickerViewLabel
. Ví dụ: sử dụng mã từ Doug, bạn sẽ thay thế tất cả các trường hợp 'UILabel
' bằng 'PickerViewLabel
'. Chỉ cần nhớ xóa đường dây pickerRowLabel.userInteractionEnabled = YES;
.
Chương trìnhSelectionIndicator chịu trách nhiệm hiển thị thanh màu xanh trên giá trị sẽ được chọn bởi bộ chọn. Thật không may là không có gì để làm với cấu trúc UITableViewCell cơ bản. – Jon