UIButton按住
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIButton按住相关的知识,希望对你有一定的参考价值。
答案
只需根据不同的事件向UIButton
添加不同的选择器。要在最初按下时设置选择器,请执行以下操作
[button addTarget:self action:@selector(buttonDown:) forControlEvents:UIControlEventTouchDown];
以及释放按钮时的选择器:
[button addTarget:self action:@selector(buttonUp:) forControlEvents:UIControlEventTouchUpInside];
另一答案
我自己也遇到过这个问题,大多数情况下我们都会使用这些事件: -
// This event works fine and fires
[button addTarget:self action:@selector(holdDown)
forControlEvents:UIControlEventTouchDown];
// This does not fire at all
[button addTarget:self action:@selector(holdRelease)
forControlEvents:UIControlEventTouchUpInside];
解:
使用长按手势识别器:
UILongPressGestureRecognizer *btn_LongPress_gesture = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleBtnLongPressGesture:)];
[button addGestureRecognizer:btn_LongPress_gesture];
手势的实现: -
- (void)handleBtnLongPressGesture:(UILongPressGestureRecognizer *)recognizer {
//as you hold the button this would fire
if (recognizer.state == UIGestureRecognizerStateBegan) {
[self buttonDown];
}
// as you release the button this would fire
if (recognizer.state == UIGestureRecognizerStateEnded) {
[self buttonUp];
}
}
另一答案
你可以实施
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
方法,然后使用CGRectContainsPoint()
检查您的按钮是否位于触摸位置
然后,如果用户移动手指
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
将被称为..在那里你应该再次检查用户是否仍在你的按钮上。否则停止你的功能
和
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
当用户从屏幕上移开手指时调用
另一答案
我认为最好的解决方案是使用UIGestureRecognizer实现,其中一个是UITapGestureRecognizer,另一个是UILongPressGestureRecognizer。
另一答案
UILongPressGestureRecognizer Swift 3及以上版本:
// Add Gesture Recognizer to view
let longPressGestureRecognizer = UILongPressGestureRecognizer(
target: self,
action: #selector(handleLongPress(_:)))
view.addGestureRecognizer(longPressGestureRecognizer!)
以上是关于UIButton按住的主要内容,如果未能解决你的问题,请参考以下文章
如何在按住手指的同时从使用一个 UIButton 切换到另一个?