不规则按钮的添加,我这里使用的第三方插件OBShapedbutton,感谢Ole Begemann。
长按和短按的思路是:短按直接使用UIButton 的addtarge 方法,长按使用长按手势
上代码
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(btnLong:)]; longPress.minimumPressDuration = 1; //定义按的时间 OBShapedButton *newButton = [[OBShapedButton alloc]initWithFrame:CGRectMake(200, 200.0, 100, 100)]; newButton.tag = 200; [newButton setBackgroundImage:[UIImage imageNamed:@"button-normal"] forState:UIControlStateNormal]; [newButton setBackgroundImage:[UIImage imageNamed:@"button-highlighted"] forState:UIControlStateHighlighted]; [newButton addGestureRecognizer:longPress]; [newButton addTarget:self action:@selector(btnShort:) forControlEvents:UIControlEventTouchUpInside];
// 这里需要注意的是 长按事件如果不做 longPress.state == UIGestureRecognizerStateBegan 这个判断,会导致began,end 分别调用一次,显然我们需要避免这种情况。
-(void)btnLong:(UILongPressGestureRecognizer *)longPress { if (longPress.state == UIGestureRecognizerStateBegan) { UIButton *newBTN =(UIButton *) longPress.view; NSLog(@"长按按钮的tag值:%d",newBTN.tag); } } -(void)btnShort:(UIButton *)newBtn { NSLog(@"短按按钮的tag值%d",newBtn.tag); }
DEMO下载地址:https://github.com/chexsong/WorkingDemos 下的 ButtonLongPress
车小松(http://blog.csdn.net/mangosnow)
本文遵循“署名-非商业用途-保持一致”创作公用协议