0
UIButton * newButton = [UIButton buttonWithType:UIButtonTypeCustom];
newButton.imageObject= someImage;
UIImage * imagePut  = someImage.imageBlob;
imagePut = [imagePut roundedCornerImage:20 borderSize:0];
[newButton setImage:imagePut forState:UIControlStateNormal];

newButton.frame= CGRectMake(column * self.distanceBetweenButton +marginBetweenButtons, row *self.distanceBetweenButton+marginBetweenButtons, self.sizeOfButtons, self.sizeOfButtons);
newButton.backgroundColor = [UIColor clearColor];
PO(@(newButton.userInteractionEnabled));
newButton.userInteractionEnabled=YES;
[newButton addTarget:self action:@selector(someImageGotPressed) forControlEvents:UIControlEventTouchUpInside];
PO(@([newButton allControlEvents]));
PO(newButton.allTargets);
[self.collectionOfButton addObject:newButton];

シンプルなボタン。問題は someImageGotPressed が呼び出されないことです。

もちろん、newButton にはデフォルトで userInteractionEnabled があります。ただし、 someImageGotPressed はまだ呼び出されていません。

ターゲットは UITableViewCell です。ユーザーがボタンを操作することを期待しているため、その uiTableViewCell の userinteractionenabled をオフにしました。

私はそれをオンに戻し、それは動作します。

しかし、何かが私を困惑させます。addTarget のターゲットは何でも構いません。UIView または UIViewController である必要さえありません。では、なぜターゲットの userInteractionEnabled がまったく問題になるのでしょうか?

これは、 UITableViewCell がボタンのスーパービューであり、ビューの userInteractionEnabled をオフにすると、スーパービューまたはそのようなものすべてでオフになるためですか?

4

1 に答える 1

1

スーパービューのuserInteractionEnabledUITableViewCell)をNOに設定すると、サブビューへのすべてのtouchsイベントも無視されます。

于 2012-10-30T07:56:22.160 に答える