2012-06-26 12 views
7

Tôi đang tạo thanh điều hướng tùy chỉnh bằng cách sử dụng UIViewUIButtons thay vì UINavigationBar.iPhone: Cách tạo UIButton mà bạn có thể dễ dàng nhấn?

Nhưng UIButtons trên thanh điều hướng không phản ứng nhạy cảm.

Tôi phải nhấn gần như trung tâm của UIButton để nhấn.
Nó không phản hồi nếu tôi chạm vào cạnh của UIButton.

Nhưng các nút trên bình thường UINavigationBar có thể được khai thác bằng cách chạm vào cạnh của nút.
Ngay cả bằng cách nhấn vào bên ngoài nút, nó có thể được khai thác.

Nút chụp hoặc nút Tùy chọn trên ứng dụng máy ảnh cũng có thể được nhấn bằng cách chạm vào cạnh hoặc bên ngoài các nút.

Làm cách nào để tôi có thể triển khai các nút dễ dàng nhấn vào ứng dụng của mình?

+2

một số mã mẫu có thể giúp chẩn đoán sự cố. –

+0

@ben Cảm ơn. Tôi sẽ tìm mã mẫu. Nhưng đây không phải là vấn đề của tôi. Tôi nghĩ rằng đây là đặc tả của 'UIButton'. Tất cả 'UIButton' ít nhạy cảm hơn nút' UINavigationBar'. Tôi muốn biết một số tài sản hoặc cách để mở rộng khu vực có thể được khai thác. –

+0

UIButton thường có một khu vực vòi rất lớn. Có thể bạn đang định cấu hình sai chúng thay vì chúng bị hỏng và bạn cần phải làm việc xung quanh nó. Yêu cầu mã của Ben là chính xác. –

Trả lời

11

Sử dụng hình ảnh và tạo nút tùy chỉnh. Đặt nút sao cho hình ảnh không được chia tỷ lệ với kích thước của chế độ xem của nút, nhưng thay vào đó sẽ chỉ là Trung tâm. Mở rộng kích thước của nút sao cho kích thước của nó lớn hơn hình ảnh ở mỗi bên. Apple làm điều này cũng như với những thứ như nút tab.

+0

Chỉ cần làm rõ, kích thước thực của nút lớn hơn hình ảnh hiển thị, vì vậy vùng có thể chạm lớn hơn rất nhiều so với kích thước hình ảnh, mặc dù chỉ có hình ảnh xuất hiện, diện tích lớn hơn rất nhạy cảm. –

+1

cảm ơn! nó hoạt động. tôi tìm thấy tài sản inset của UIButton cũng rất hữu ích để mở rộng diện tích vòi. Và thêm lề trong suốt vào hình ảnh cũng có thể mở rộng vùng nhấn. –

4

Tuyên bố từ chối trách nhiệm:Mã này chưa được thử nghiệm, nhưng nó cung cấp cho bạn ý tưởng về cách thực hiện.

Bạn tạo nút (trong trường hợp này là 40px x 40px) và sau đó thêm hình nền vào ảnh nhỏ hơn, do đó tạo ấn tượng cho rằng hình ảnh rất "có thể nhấp".

// This image is 20px x 20px (Just an example) 
UIImage* backgroundImage = UIImage imageNamed:@"backgroundImage.png"] 

// Custom button, remember to add a target method 
UIButton* customButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
customButton.frame = CGRectMake(0.0, 0.0, 40.0, 40.0); 
customButton.contentMode = UIViewContentModeCenter; 
[customButton setImage:backgroundImage forState:UIControlStateNormal]; 

UIBarButtonItem* customBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:customButton]; 
self.navigationItem.rightBarButtonItem = customBarButtonItem; 
[customBarButtonItem release]; 
10

UIButtonimageEdgeInsets property đặc biệt cho mục đích này. Chỉ cần tạo khung UIButton lớn như bạn cần cho khu vực có thể chạm và so với hình ảnh tỷ lệ bên trong nó một cách thích hợp, sử dụng imageEdgeInsets.