最近做第三方键盘开发,模拟键盘的长按删除
删除按钮上添加长按事件:
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizeralloc] initWithTarget:selfaction:@selector(deleteMore:)];
[deleteBtn addGestureRecognizer:longPress];
事件响应:
- (void)deleteMore:(UILongPressGestureRecognizer*)sender {
if (sender.state ==UIGestureRecognizerStateBegan) {
[selfbeginDelete];
} elseif (sender.state ==UIGestureRecognizerStateEnded){
[selfendDelete];
}
}
- (void)beginDelete {
[self.timerinvalidate];
self.timer =nil;
self.timer = [NSTimertimerWithTimeInterval:0.1repeats:YESblock:^(NSTimer *_Nonnull timer) {
[self.textDocumentProxydeleteBackward];
}];
[[NSRunLoopmainRunLoop]addTimer:self.timerforMode:NSRunLoopCommonModes];
}
- (void)endDelete {
[self.timerinvalidate];
self.timer =nil;
}
注意:beginDelete中timer支持10以上api,如果需要支持10以下请改为:
- (void)deleteMore:(UILongPressGestureRecognizer*)sender {
if (sender.state ==UIGestureRecognizerStateBegan) {
[selfbeginDelete];
} elseif (sender.state ==UIGestureRecognizerStateEnded){
[selfendDelete];
}
}
- (void)beginDelete {
[self.timer invalidate];
self.timer = nil;
self.timer = [NSTimer timerWithTimeInterval:0.1 target:self selector:@selector(delete:) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
}
- (void)endDelete {
[self.timer invalidate];
self.timer = nil;
}
- (void)delete:(NSTimer*)timer {
[self.textDocumentProxy deleteBackward];
}