2010-01-28 32 views
6

Tôi muốn thay đổi UITextInputTraits của một bàn phím trong khi nó đang được sử dụng ....Có thể thay đổi UITextInputTraits khi đang xem UIKeyboard không?

My lý tưởng mã sẽ giống như thế này:

- (IBAction)nameTextDidChange:(UITextField *)sender { 
    if ([sender.text isEqualToString:@""]) { 
     sender.returnKeyType = UIReturnKeyDone; 
    } else { 
     sender.returnKeyType = UIReturnKeySearch; 
    } 
} 

Vì vậy ... Tôi có một khác nhau Nút 'Return' cho một chuỗi rỗng khi tôi làm một chuỗi với một số văn bản. Mã tôi đăng ở trên không hoạt động, bàn phím vẫn giữ lại các đặc điểm đầu vào văn bản gốc của nó.

Bất kỳ ý tưởng nào, hoặc điều này sẽ không bao giờ hoạt động bất kể tôi có cố gắng không?

Chúc mừng!

Nick.

Nhờ Deepak, đây là đoạn code tôi thực sự được sử dụng:

if ([sender.text isEqualToString:@""]) { 
    sender.returnKeyType = UIReturnKeyDone; 

    [sender resignFirstResponder]; 
    [sender becomeFirstResponder]; 
} else if (sender.returnKeyType == UIReturnKeyDone) { 

    NSString *cachedLetter = sender.text; 

    sender.returnKeyType = UIReturnKeySearch; 

    [sender resignFirstResponder]; 
    [sender becomeFirstResponder]; 

    sender.text = cachedLetter; 
} 

Trả lời

5

Bạn có thể làm cho công việc này bằng cách thêm các dòng sau vào cuối của phương pháp.

if ([textField.text isEqualToString:@""]) { 
    textField.returnKeyType = UIReturnKeyDone; 

    [textField resignFirstResponder]; 
    [textField becomeFirstResponder]; 
} else if (textField.returnKeyType == UIReturnKeyDone) { 
    textField.returnKeyType = UIReturnKeySearch; 

    [textField resignFirstResponder]; 
    [textField becomeFirstResponder]; 
} 

Điều này sẽ hiệu quả.

Bạn về cơ bản bật và tắt để thay đổi đầu vào văn bản. Thứ hai nếu là để chắc chắn rằng bạn lật chỉ khi cần thiết.

+0

Thiên tài, cảm ơn rất nhiều vì điều này. Nó làm việc gần như hoàn hảo .. điều duy nhất mà không làm việc là khi bạn từ chức một bàn phím, bạn mất văn bản trong UITextField - vì vậy tôi chỉ cần có bộ nhớ cache đó! Tôi sẽ đăng mã chính xác mà tôi đã sử dụng trong câu hỏi của mình cho người khác. –

4

[textField reloadInputViews] dường như làm các trick ...

+0

Điều này cũng như câu trả lời của Deepak Danduprolu đối với tôi – richy

0

resignFirstResponder/becomeFirstResponder & reloadInputViews có một số hãy cẩn thận. Xem stackoverflow.com/questions/5958427/…. Những thay đổi bàn phím trở lại trạng thái ban đầu của nó. Vì vậy, nếu người dùng đã chuyển sang một trong các bố cục bàn phím khác (số, dấu chấm câu, v.v.), trạng thái đó sẽ bị mất. Tôi chưa bao giờ tìm được giải pháp tốt.

Các vấn đề liên quan