Tôi muốn có thể tạo UIButton với vùng phản hồi quá khổ. Tôi biết rằng một cách để làm điều đó là ghi đè lên phương thức hitTest trong một lớp con, nhưng làm thế nào để tôi nhanh chóng khởi tạo đối tượng nút tùy chỉnh của tôi ở vị trí đầu tiên?iPhone: Ghi đè nút UIButtonWithType để trả về lớp con
[OversizedButton buttonWithType: UIButtonTypeDetailDisclosure];
không hoạt động ngoài hộp vì nútWithType trả về UIButton, không phải nút quá khổ.
Vì vậy, có vẻ như tôi cũng cần phải ghi đè phương thức buttonWithType. Có ai biết cách để làm điều này không?
@implementation OversizedButton
+ (id)buttonWithType:(UIButtonType)buttonType
{
// Construct and return an OversizedButton rather than a UIButton
// Needs to handle special types such as UIButtonTypeDetailDisclosure
// I NEED TO KNOW HOW TO DO THIS PART
}
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
// Return results if touch event was in oversized region
// I ALREADY KNOW HOW TO DO THIS PART
}
@end
Hoặc, có thể tôi có thể tạo nút bằng cách sử dụng alloc/initWithFrame. Nhưng thuộc tính buttonType là chỉ đọc, vậy làm cách nào để bạn tạo các loại nút tùy chỉnh?
Lưu ý: Tôi biết có nhiều cách khác để thực hiện việc này, chẳng hạn như có nút ẩn đằng sau nút hiển thị. Tôi không quan tâm đến cách tiếp cận đó và muốn tránh nó. Bất kỳ trợ giúp nào về cách tiếp cận được mô tả ở trên sẽ rất hữu ích. Cảm ơn
Bạn có nghiêm túc đề xuất rằng tôi sử dụng một phương pháp không có giấy tờ trong một ứng dụng thương mại sẽ yêu cầu sự chấp thuận của Apple không? – Amagrammer
@Ama: Tôi đề nghị bạn không bận tâm với thuộc tính 'buttonType'. Nhưng nếu bạn phải, cách duy nhất để thay đổi nó là thông qua các phương pháp không có giấy tờ. – kennytm
Vâng, tôi cần hiển thị các nút UIButtonTypeDetailDisclosure, vì vậy "không làm phiền" sẽ không hoạt động. Tôi có nên giả định rằng với kiến thức của bạn không có cách nào để ghi đè lên phương thức buttonWithType? Cảm ơn – Amagrammer