2013-04-15 23 views
10

Kullanıcının herhangi bir tuşa bastığında bunu tespit etmek istiyorum.iphone'da basılan Klavye tuşu nasıl algılanır?

Sadece klavye yazarken değil, herhangi bir karakter yazarken çağrılan herhangi bir yöntem.

Teşekkürler! Klavye bir UITextField dokunarak kullanıcı sonucu gösteriyor varsayarsak

+2

Bunun yerine size bir sorum var, klavye gösterilmiyorsa kullanıcı nasıl bir şey yazabilir? –

+0

İyi cevap burada. http://stackoverflow.com/questions/5216245/how-to-handle-key-events-in-iphone – Dilip

+1

Metin alanı kullanıyor musunuz? onay [Bu] [1] [1] : Doğru hatırlamak http://stackoverflow.com/questions/7010547/uitextfield-text-change-event –

cevap

37

bir kullanıcı bir anahtar bastığında:

durumunda UITextField

- (BOOL)textField:(UITextField *)textField 
      shouldChangeCharactersInRange:(NSRange)range 
      replacementString:(NSString *)string { 

    // Do something here... 
} 

Durumunda UITextView yılında:

- (BOOL)textView:(UITextView *)textView 
     shouldChangeTextInRange:(NSRange)range 
     replacementText:(NSString *)text { 

    // Do something here... 
} 

Bu nedenle, klavyeyi kullanarak bastığınız her tuşa her seferinde bu yöntem denir.

NSNotificationCenter'ı da kullanabilirsiniz. Bunlardan herhangi birini ViewDidLoad yöntemine eklemelisiniz.

NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; 

UITextField:

[notificationCenter addObserver:self 
         selector:@selector(textFieldText:) 
          name:UITextFieldTextDidChangeNotification 
         object:yourtextfield]; 

Sonra yöntemde textFieldText: kodunuzu koyabilirsiniz:

- (void)textFieldText:(id)notification { 

    // Do something here... 
} 

UITextView

[notificationCenter addObserver:self 
         selector:@selector(textViewText:) 
          name:UITextViewTextDidChangeNotification 
         object:yourtextView]; 

Sonra yöntemde textViewText: kodunuzu koyabilirsiniz:

- (void)textViewText:(id)notification { 

    // Do something here... 
} 

yardımcı olur Umut.

+1

Bir UITextView'im varsa ve ReturnKey'e basarsam, textViewDidChange yöntemi de çağrılır. Klavyede hangi tuşa basıldığını anlamanın bir yolu var mı? –

+0

UIWebView'daki tuş basışları hakkında ne düşünüyorsunuz? –

+5

Not: shouldChangeTextInRange: metin alanı boşsa ve silme tuşuna basarsanız çağrılmaz. Metin alanı, alanın değişmediğini algılar gibi görünüyor, böylece delege yönteminin kullanılması gerekmiyor =/ – Zhang

1

, kendinize temsilci yapmak ve bu yöntemi uygulayabilirsiniz: Bir kullanıcı bir tuşa bastığında her zaman çağrılacak

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

. Doğrudan klavye olayları her zamanı işleyebilir

+1

bu her zaman arayacak, ancak kullanıcı tüm metni temizlerse, bu –

+0

olarak adlandırılmaz. Metin alanı boşsa ve boşluk tuşuna tekrar basıldığında çağrılmaz. – Ramakrishna

İlgili konular