Ich habe eine UIButton in eine benutzerdefinierte UIView eingefügt, und die Schaltfläche empfängt keine Berührungsereignisse (sie gelangt nicht in den hervorgehobenen Zustand, mein Problem ist also nicht über die Möglichkeit, einen Touch innerhalb von Handler zu verkabeln). Ich habe versucht, es sowohl in den XIB in Interface Builder zu setzen, als auch versucht, das UIButton programmatisch separat in die UIView einzufügen, beides endete mit keinem Glück. Alle meine Ansichten sind in einem UIScrollView, also ich zuerst, obwohl UIScrollView sie möglicherweise blockiert, also habe ich auch eine Schaltfläche programmatisch genau so hinzugefügt, wie ich meine benutzerdefinierte Ansicht in UIScrollView hinzugefügt, und die Schaltfläche funktionierte, Eliminierung der Möglichkeit von UIScrollView könnte sei die Ursache. Meine Ansicht ist hiearchy ist wie folgt:UIButton in UIView reagiert nicht auf Berührungsereignisse
Die Taste auf dem Bild Ansicht ist, und die vordere Schicht ist meine Taste nicht vollständig belegt, so gibt es keinen Grund für mich nicht physisch mit der Taste interagiert werden. In meinem eigenen Code Seite ist der Ansicht, Ich schaffe meine Ansicht als solche:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
UIView *sub = [[[NSBundle mainBundle] loadNibNamed:@"ProfileView" owner:self options:nil] objectAtIndex:0];
[self addSubview:sub];
[sub setUserInteractionEnabled:YES];
[self setUserInteractionEnabled:YES];
CALayer *layer = sub.layer;
layer.masksToBounds = YES;
layer.borderWidth = 5.0;
layer.borderColor = [UIColor whiteColor].CGColor;
layer.cornerRadius = 30.0;
/*layer.shadowOffset = CGSizeZero;
layer.shadowRadius = 20.0;
layer.shadowColor = [[UIColor blackColor] CGColor];
layer.shadowOpacity = 0.8;
*/
}
return self;
}
ich alle Kombinationen von setUserInteractionsEnabled
ausprobiert habe, und hatte kein Glück. (Ja, setzen Sie sie auch in Interface Builder). Ich habe auch in einer anderen Frage mit einem ähnlichen Problem gelesen, dass ich versuchen sollte "canBecomFirstResponder" zu überschreiben, um "JA" zurückzugeben, und ich habe auch das auch getan. Aber das Problem besteht weiterhin, ich kann nicht auf den Knopf klicken. Ich habe keine besonderen Eigenschaften, Einstellungen auf den Knopf, es ist nur eine regelmäßige. Meine anderen Objekte in der Ansicht (Beschriftung unten, Bildansicht hinter der Schaltfläche usw.) funktionieren problemlos. Was könnte hier möglicherweise falsch sein?
Danke,
Kann.
UPDATE: Hier ist eine schnelle Reproduktion des Problems: https://dl.dropbox.com/u/79632924/Test.zip Versuchen zu laufen und auf die Schaltfläche klicken.
könnten Sie diese Ansicht in ein kleines Testprojekt extrahieren? –
Dumme Frage: Haben Sie daran gedacht, den Button mit IBAction zu verknüpfen? –
@HotLicks ja, sie sind verknüpft. Das Problem besteht jedoch nicht darin, dass der Ereignishandler bei Berührung nicht ausgelöst wird. Das Problem besteht darin, dass der Button überhaupt keine Berührungsereignisse empfängt (oder zumindest auf diese reagiert). –