2011-07-25 23 views
18

Tôi làm cách nào để phát hiện nút backspace được ghi trên UIKeyboard?Làm thế nào để phát hiện nút "backspace" của UIKeyboard touch trên UITextField?

enter image description here

nhờ


EDIT: Có bất kỳ bàn phím đại biểu mà trả về giá trị ép quan trọng?

+0

câu hỏi tương tự ở đây: http://stackoverflow.com/questions/4351358/detect-backspace-in-uitextfield-on-a-blank-textfield/4355245#4355245 –

+0

cho trống UITextField, phát hiện xóa lùi kiểm tra này : - https://stackoverflow.com/a/45327651/996796 –

Trả lời

55

nếu UITextField trống, phương pháp shouldChangeTextInRange đại biểu không được gọi Bạn có thể phân lớp UITextField và ghi đè phương pháp này :

-(void)deleteBackward; 
{ 
    [super deleteBackward]; 
    NSLog(@"BackSpace Detected"); 
} 

vì UITextField tuân thủ giao thức UITextInput, phương pháp này được triển khai và bạn có thể ghi đè lên để phát hiện khi nhấn phím xóa. Sau đó, bạn có thể viết giao thức/phương thức ủy nhiệm của riêng mình để cảnh báo ủy nhiệm trường văn bản tùy chỉnh của bạn nếu phát hiện thấy không gian ẩn.

+4

Theo tôi, đây phải là câu trả lời được chấp nhận !!! –

+1

+1 Câu trả lời này đơn giản hơn nhiều so với câu hỏi tại http://stackoverflow.com/questions/1977934/detect-backspace-in-uitextfield. – ide

+2

Tính năng này không hoạt động trên iOS8 - có lỗi của Apple. Hy vọng rằng nó sẽ được sửa trong iOS8.1 –

4

Tạm thời tôi đang chèn một số không gian char trên textFieldDidBeginEditing

textField.text = @"\u200B"; 

trên backspace, nó loại bỏ ký tự, nhưng đồ họa đó là giống nhau!

Nó một hack, nó hoạt động, nhưng nó ẩn văn bản giữ chỗ ... không tốt ...

28

Trước hết, UIViewController tham chiếu đến UITextField cần phải tuân theo UITextFieldDelegate . Sau đó, đặt lớp của bạn là delegate thành UITextField (ví dụ: [myTextField setDelegate:self]). Sau đó, trong lớp học của bạn, bạn thêm những điều sau đây. Khi một chuỗi "" được gửi dưới dạng replacementString bạn biết đó là backspace.

(BOOL)textField:(UITextField *)textField 
     shouldChangeCharactersInRange:(NSRange)range 
     replacementString:(NSString *)string 
{     
    if ([string isEqualToString:@""]) { 
     NSLog(@"Backspace");    
    } 
    return YES; 
} 
Các vấn đề liên quan