您的位置:首页 > 移动开发 > IOS开发

iOS模拟键盘长按删除

2017-07-21 10:53 399 查看
最近做第三方键盘开发,模拟键盘的长按删除

删除按钮上添加长按事件:

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];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息