UIButton的两种方法?

时间:2014-11-05 09:37:38

标签: ios objective-c uibutton

我们需要设置UIButton有两种方法,第一种方法是当你触摸它时(向下和向上)你得到一个动作,但是当你长按它时,你得到另一种方法。

例如,要在长时间点击时获取有关它的数据,以及在常规点击时获取相关数据,那么另一件事。

如何使用UIButton实现这一目标?

            UIButton *CAT = [UIButton buttonWithType:UIButtonTypeCustom];
            CAT.contentHorizontalAlignment=UIControlContentHorizontalAlignmentCenter;
            CAT.backgroundColor=[UIColor clearColor];
            [CAT addTarget:self action:@selector(newcat:)forControlEvents:UIControlEventTouchUpInside];

我已经开始用这个

添加一个手势了
  UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
        [CAT addGestureRecognizer:longPress];

但只有当你脱下手指时才会触发。 我希望它在1-2秒后我的手指仍在那里时被触发。 我能这样做吗?我可以调整它触发所需的时间吗?

2 个答案:

答案 0 :(得分:1)

您可以使用活动UIControlEventTouchDown,使用延迟时间长按,您必须处理UIControlEventTouchUpInsideUIControlEventTouchUpOutside。祝你好运!

答案 1 :(得分:0)

这是正常方法

     UIButton *CAT = [UIButton buttonWithType:UIButtonTypeCustom];
        CAT.contentHorizontalAlignment=UIControlContentHorizontalAlignmentCenter;
        CAT.backgroundColor=[UIColor clearColor];
        [CAT addTarget:self action:@selector(newcat:)forControlEvents:UIControlEventTouchUpInside];



 UILongPressGestureRecognizer *longpressGesture = 
 [[UILongPressGestureRecognizer alloc] initWithTarget:self
                                        action:@selector(longPressHandler:)];
longpressGesture.minimumPressDuration = 5;   // set the time interval

[longpressGesture setDelegate:self];
[CAT addGestureRecognizer:longpressGesture];

[self.view addsubview: CAT]; 

长按操作方法

- (void)longPressHandler:(UILongPressGestureRecognizer *)gestureRecognizer {
NSLog(@"longPressHandler");
 // do long press action
}

正常行动方法

-(void) newcat:(id)sender

{
  // do normal action here
 }