큰 반응 영역을 사용하여 UIButton을 만들 수 있기를 원합니다. 한 가지 방법은 하위 클래스의 hitTest 메서드를 재정의하는 것이지만 처음에는 사용자 정의 단추 개체를 인스턴스화하는 방법입니다. buttonWithType가있는 UIButton 아닌 OversizedButton 반환하기 때문에 iPhone : UIButton을 재정 의하여 buttonWithType을 반환하여 서브 클래스를 반환합니다.
[OversizedButton buttonWithType: UIButtonTypeDetailDisclosure];
는 상자 밖으로 작동하지 않습니다.
그래서 buttonWithType 메서드도 재정의해야 할 것처럼 보입니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?
@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
또는 어쩌면 alloc/initWithFrame을 사용하여 단추를 만들 수 있습니다. 하지만 buttonType 속성은 읽기 전용이므로 사용자 정의 단추 유형을 어떻게 만듭니 까?
참고 : 보이지 않는 버튼이 보이는 것 같은 다른 방법이 있음을 알고 있습니다. 나는 그 접근법에 관심이없고 그것을 피하는 것을 선호 할 것입니다. 위에서 설명한 방법에 대한 도움은 매우 유용합니다. 감사합니다
Apple 승인이 필요한 상업용 응용 프로그램에서 문서화되지 않은 방법을 사용하고 있다는 것을 진지하게 제안하고 있습니까? – Amagrammer
@Ama :'buttonType' 속성에 신경 쓰지 않는 것이 좋습니다. 그러나 반드시해야한다면, 그것을 변경하는 유일한 방법은 문서화되지 않은 방법을 통해서입니다. – kennytm
음, UIButtonTypeDetailDisclosure 버튼을 표시해야하므로 "신경 쓰지 않아"는 작동하지 않습니다. buttonWithType 메서드를 재정의 할 방법이 없다는 것을 알고 있다고 가정해야합니까? 감사합니다 – Amagrammer