ios 8自定义键盘保持button来删除?

我目前正在build立一个自定义的键盘,我差不多完成了。 我有一个问题是删除button。 当用户点击删除button,它做它应该做的,并删除以前的文本条目。 但是,当用户按下button时,什么都不会发生。 我如何做到这一点,以便当用户按下删除button,键盘连续删除像在标准的ios键盘? 这是我现在的代码:

杂注标记键盘

- (void)addGesturesToKeyboard{ [self.keyboard.deleteKey addTarget:self action:@selector(pressDeleteKey)forControlEvents:UIControlEventTouchUpInside]; 

和:

 -(void)pressDeleteKey{ [self.textDocumentProxy deleteBackward]; } 

谢谢你的帮助。

触摸屏幕后立即设置计数器,例如2-5秒。 称为长按手势的情况,这里是链接到相似的问题。

在UICollectionViewCell上长按手势

Swift 3使用“allowableMovement”属性

 override func viewDidLoad() { super.viewDidLoad() let longPress = UILongPressGestureRecognizer(target: self, action: #selector(KeyboardViewController.handleLongPress(_:))) longPress.minimumPressDuration = 0.5 longPress.numberOfTouchesRequired = 1 longPress.allowableMovement = 0.1 buttonDelete.addGestureRecognizer(longPress) } func handleLongPress(_ gestureRecognizer: UIGestureRecognizer) { textDocumentProxy.deleteBackward() } 

你可以通过pipe理button的事件,如触地,touchupinside和touchoutside来做到这一点。

当按下此时按下延时0.2秒启动计时器,并从textDocumentProxy中删除最后一个字符,直到button的启动方法启动,之后您只需要使计时器无效。

 [self.btnDelete addTarget:self action:@selector(btnTocuhDown:) forControlEvents:UIControlEventTouchDown]; [self.btnDelete addTarget:self action:@selector(btnTouchUp:) forControlEvents:UIControlEventTouchUpInside]; [self.btnDelete addTarget:self action:@selector(btnTouchUp:) forControlEvents:UIControlEventTouchUpOutside]; 

– (void)btnTocuhDown

  NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(kpTimerMethod:) userInfo:nil repeats:YES]; self.kpTimer = timer; __weak typeof(self)weakSelf = self; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^(void){ if (timer == self.kpTimer) { [weakSelf.kpTimer fire]; } }); 

– (void)kpTimerMethod:(NSTimer *)定时器

 if (self.btnDelete.highlighted) { [self deleteLastCharacter]; } else { [timer invalidate]; self.kpTimer = nil; } 

– (无效)deleteLastCharacter

 NSString *strInput = self.textDocumentProxy.documentContextBeforeInput; if (strInput.length > 1) NSString *coupleOfLastCharacters = [strInput substringWithRange:NSMakeRange(strInput.length-2, 2)]; if( [@"yo" caseInsensitiveCompare:coupleOfLastCharacters] == NSOrderedSame ) { [self.textDocumentProxy deleteLastCharacter]; } } [self.textDocumentProxy deleteLastCharacter]; 

– (void)btnTouchUp

 [self.kpTimer invalidate]; self.kpTimer = nil; 
 - (void)addGesturesToKeyboard{ UILongPressGestureRecognizer *ges = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)]; ges.minimumPressDuration = 0.1; ges.numberOfTouchesRequired = 1; ges.delegate = self; [self.mykeyboard.deleteKey addGestureRecognizer:ges]; } - (void)longPress:(UILongPressGestureRecognizer*)gesture { [self.textDocumentProxy deleteBackward]; }