你加入長按手勢控制器具有UIButtons作爲子視圖UIView的?如果是這樣,那麼@Magic Bullet Dave的方法可能是一條路要走。
另一種方法是繼承UIButton併爲每個UIButton添加一個longTapGestureRecogniser。然後你可以讓你的按鈕做你喜歡的。例如,它可以向視圖控制器發送標識自己的消息。以下片段說明了子類的方法。
- (void) setupLongPressForTarget: (id) target;
{
[self setTarget: target]; // property used to hold target (add @property and @synthesise as appropriate)
UILongPressGestureRecognizer* longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:button action:@selector(longPress:)];
[self addGestureRecognizer:longPress];
[longPress release];
}
- (void) longPress: (UIGestureRecognizer*) recogniser;
{
if (![recogniser isEnabled]) return; // code to prevent multiple long press messages
[recogniser setEnabled:NO];
[recogniser performSelector:@selector(setEnabled:) withObject: [NSNumber numberWithBool:YES] afterDelay:0.2];
NSLog(@"long press detected on button");
if ([[self target] respondsToSelector:@selector(longPressOnButton:)])
{
[[self target] longPressOnButton: self];
}
}
在視圖控制器,你可能有一些代碼是這樣的:
- (void) viewDidLoad;
{
// set up buttons (if not already done in Interface Builder)
[buttonA setupLongPressForTarget: self];
[buttonB setupLongPressForTarget: self];
// finish any other set up
}
- (void) longPressOnButton: (id) sender;
{
if (sender = [self buttonA])
{
// handle button A long press
}
if (sender = [self buttonB])
{
// handle button B long press
}
// etc.
}
如果([[個體經營目標] respondsToSelector:@selector(longPressOnButton :)]){ [自我目標] longPressOnButton:self]; } 這個if-block不能編譯...給錯誤:沒有已知的實例方法... – trillions
我想通了...增加了一個協議,它修復了。謝謝.. – trillions