2012-10-20 4 views
0

편집 할 수있는 uitextview가 있습니다. 표준 키보드 백 스페이스/삭제 단추 operation.ie 반복 기능을 모방 한 백 스페이스 삭제 단추를 추가하려고합니다.uitextview 반복하여 텍스트 단추를 삭제합니다.

+0

확인. 너 뭐 해봤 니? 귀하의 질문은 무엇인가? 어떤 도움이 필요 하신가요? 당신이 당신 자신의 커스텀 inputView를 사용하고 있다는 것을 암시하고 있습니까? 좋은 대답을 얻는 가장 좋은 방법은 훌륭하고 완전하고 명확한 질문을하는 것입니다. – rmaddy

+0

u 표준 키 보드 삭제 키를 터치하고 반복합니다.이 동작을 모방하는 버튼이 필요합니다. NSTimers를 조사했습니다.이 예가 도움이 될 것입니다. – user1725650

+0

타이머를 사용하는 것이 내가 사용하는 방법입니다. 사용자가 버튼을 누를 때 반복 타이머를 시작하십시오. 사용자가 버튼을 놓을 때 타이머를 취소합니다. 각 타이머 동작은/backspace를 삭제해야합니다. – rmaddy

답변

0

나는 목표에 추가하지 않고 화면에 버튼을 추가하여이 방법에 접근합니다. 그런 다음 터치 이벤트를 사용하여 버튼 동작을 트리거합니다. 버튼을 만들 때 태그를 고유 한 값으로 설정하십시오. 예제에서는 태그를 100으로 설정했습니다. 다음 코드를 구현하면 좋을 것입니다.

- (void)backspace { 
    if (![textField.text isEqualToString:@""]) { 
     NSString *backspace = textField.text; 
     int lengthofstring = backspace.length; 
     backspace = [backspace substringToIndex:lengthofstring - 1]; 
     textField.text = backspace; 
    } 
} 

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { 
    UITouch *touch = [touches anyObject]; 

    if (touch.view.tag == 100) { 
     timer = [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(backspace) userInfo:nil repeats:YES]; 
    } 
} 

-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event { 
    UITouch *touch = [touches anyObject]; 

    if (touch.view.tag == 100) { 
     if (timer != nil) 
      [timer invalidate]; 
     timer = nil; 
    } 
} 

-(void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event { 
    UITouch *touch = [touches anyObject]; 

    if (touch.view.tag == 100) { 
     if (timer != nil) { 
      [timer invalidate]; 
      timer = nil; 
     } 
    } 
}