7

Tôi đã đặt hình nền cho trường tìm kiếm và tìm kiếm bằng cách sử dụng mã bên dưới. Tôi đang sử dụng Xcode5 DP2 và ios 7.Hình ảnh tùy chỉnh nút hủy UISearchbar

[[UISearchBar appearance] setSearchFieldBackgroundImage:[UIImage imageNamed:@"fieldBg"] forState:UIControlStateNormal]; 
[[UISearchBar appearance] setBackgroundImage:[UIImage imageNamed:@"searchBarBg"]]; 

Mã này hoạt động tốt. Nhưng tôi cũng muốn tùy chỉnh hình ảnh nút hủy. Cho rằng tôi đã sử dụng đoạn mã sau trong viewWillAppear và searchBarTextDidBeginEditing. Nó hoạt động lần đầu tiên trong khi tải.

for (UIView *searchbuttons in _searchBar.subviews) 
{ 
    if ([searchbuttons isKindOfClass:[UIButton class]]) 
    { 
     UIButton *cancelButton = (UIButton*)searchbuttons; 
     cancelButton.enabled = YES; 
     [cancelButton setBackgroundImage:[UIImage imageNamed:@"cancelImage"] forState:UIControlStateNormal]; 
     break; 
    } 
} 

Nếu nút hủy nhấp một lần thì hình ảnh tùy chỉnh sẽ không đến sau đó. Tôi đã đăng nhập _searchBar.subviews và nhận kết quả dưới dạng

po [_searchBar subviews] 
<__NSArrayM 0x210b1120>(
<UISearchBarBackground: 0x1fd6ff80; frame = (0 0; 768 44); userInteractionEnabled = NO; layer = <CALayer: 0x1fdafaf0>>, 
<UISearchBarTextField: 0x1fd6f2f0; frame = (5 -3; 758 50); text = ''; clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x1fdc10b0>; layer = <CALayer: 0x1fd6f480>> 
) 

Từ này tôi hiểu rằng nút hủy không đến trong các bản xem phụ mà tôi đang kiểm tra. Tôi đã thử các mã trên trong tất cả các phương pháp đại biểu có thể nhưng không thể giải quyết vấn đề.

Trả lời

2

Bạn có thể sử dụng chức năng [self setShowsCancelButton:NO animated:NO]; trong layoutSubviews và thêm tùy chỉnh UIButton vào địa điểm bạn muốn. Bạn chỉ phải chịu nỗi đau khi viết mã cho chức năng của nút hủy.

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