我一直在尝试复制iPhone控制台主屏幕上的按钮。我想要实现的目标如下:
我已经成功完成了所有这些,但我面临以下问题,Apple可能会击败,我还不能(还):
在正常的水龙头上,操作系统稍等一下,以确保它不是长按,或双击,或我猜的任何东西。在它等待足够长的时间之前,它无法确定它不是一种特殊的姿势。因此,每个按钮都会被注册,但所有内容都会延迟大约1.5秒。
这是一个非常糟糕的用户体验,但是当我在主屏幕上点击一个应用程序时,它的'不稳定(即使应用程序被杀)。然而,如果我长按,它会正确注册。
我没有。我在这里俯瞰什么?
我有这个:
Very strange issue in Swift code. Delay to make operations
只有在手势达到“开始”状态时才会调用长手势代码,就像主屏幕上的iOS行为一样。在这个过程中很早就开始了。
我试过摆弄不同的属性和设置,但我无法让它工作。你有没有成功的?什么是正确的设置?
答案 0 :(得分:1)
您可以使用UIButton TouchDown和TouchUpInside事件来实现此目的。
BOOL touchInProgress;
[self.button addTarget:self action:@selector(touchStart:) forControlEvents:UIControlEventTouchDown];
[self.button addTarget:self action:@selector(touchEnd:) forControlEvents:UIControlEventTouchUpInside];
- (void)touchStart:(id)sender {
touchInProgress=YES;
[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(longTouch) userInfo:nil repeats:NO];
}
- (void)touchEnd:(id)sender {
if (touchInProgress) {
[self openIcon];
}
touchInProgress=NO;
}
- (void)longTouch {
if (touchInProgress) {
[self deleteIcon];
}
touchInProgress=NO;
}
- (void)openIcon {
}
- (void)deleteIcon {
}
希望这有帮助。