Mac geliştirme konusunda oldukça yeni (bir web ve iOS arka planından geliyor) ve NSTextView değerinin değiştiği her seferinde nasıl bildirim alabileceğimi bilemiyorum. Herhangi bir fikir? Nstextfield temsilcisiniNSTextView değeri değiştirildi
cevap
ups sadece NSTextView bir geri istiyoruz ve sadece protokol temsilci olmalıdır nesnenin başlığında eklemek
NSTextField değil gördü@interface delegateAppDelegate : NSObject <NSApplicationDelegate, NSTextViewDelegate> {
NSWindow *window;
}
Bundan sonra
-(void)textDidChange:(NSNotification *)notification {
NSLog(@"Ok");
}
gibi bir yöntem temsilci İşte
ayarlayın. Eğer .m dosyasında temsilci protokolünü eklemek temsilci .h dosyasında Eğer -(void)controlTextDidChange:(NSNotification *)obj { NSLog(@"ok"); }
gibi bu temsilciyi ayarlayın ve sonra kullanmak
bu NSTextField değil NSTextView için – valexa
NSTextView NSTextField bir alt sınıfıdır ve böylece delegeleri – kezi
Korkarım ki https://developer.apple.com/library/mac/documentation/cocoa/reference/applicationkit/classes/NSTextView_Class/Reference/Reference.html açıkça NSTextView NSView miras gelen NSText miras gösterir. NSTextField, NSView'den devraldığı NSControl'den miras alır. controlTextDidChange, NSTextField'in ControlTextDidChange öğesine erişimi olduğunu, ancak NSTextView'ın NSControl veya NSTextField ürününden devralmadığı için bir delege yöntemidir. –
almalıdır nesneyle NSTextView (değil NSScrollView) ait temsilci özelliğini bağlı emin olun eklemek çözüm:
NSTextView *textView = ...;
@interface MyClass : NSObject<NSTextStorageDelegate>
@property NSTextView *textView;
@end
MyClass *myClass = [[MyClass alloc] init];
myClass.textView = textView;
textView.textStorage.delegate = myClass;
@implementation MyClass
- (void)textStorageDidProcessEditing:(NSNotification *)aNotification
{
// self.textView.string will be the current value of the NSTextView
// and this will get invoked whenever the textView's value changes,
// BOTH from user changes (like typing) or programmatic changes,
// like textView.string = @"Foo";
}
@end
- 1. NSTextView
- 2. NSTextView ayarı
- 3. CALayer, NSTextView ve ölçekleme
- 4. NSTextView öğesini aşağı kaydırıyor
- 5. NSTextView ekleme noktasından NSpoint
- 6. NSView ve NSScrollView öğesinde NSTextView
- 7. NSTextView sarı vurgulamak safari arama
- 8. NSTextView alt görünümü, drawsBackground = false
- 9. C# backgroundworker'da daha fazla argüman nasıl gönderilir değiştirildi etkinlik değiştirildi
- 10. Dünyada Mülkiyet Değiştirildi mi?
- 11. ReactiveLIst Öğeleri Değiştirildi
- 12. Realm: Kayıtların sırası değiştirildi
- 13. Liste Öğe değiştirildi
- 14. android 2 boşluk, virgülle değiştirildi
- 15. flatMap davranışı 2.10.0 olarak değiştirildi
- 16. GSSException: İleti akışı değiştirildi (41)
- 17. NSTextView vermek Bazı dolgu/kenar boşluğu
- 18. NSTextView otomatik düzende düzgün şekilde yeniden boyutlandırılıyor
- 19. NSTextView, ek metin ve düzgün kaydırma
- 20. NSTextView yazım denetimini tamamen devre dışı bırak
- 21. Kakao NSTextView, kullanıcı tarafından yazılırken nasıl büyüyebilirim?
- 22. Gözlemlenebilir Koleksiyon Varlık Toplamadaki Öğede Değiştirildi
- 23. Yapılandırma dosyası başka bir program tarafından değiştirildi
- 24. neden hibernate HibernateException olarak değiştirildi (işaretlenmemiş) RuntimeException
- 25. Jersey Giriş akışı, filtrede değiştirildi. Jersey Kaynak
- 26. VSTO outlook gövde metni değiştirildi etkinlik
- 27. Tümüne AllowOverride değiştirildi ve hala hiçbir şey
- 28. Neden parenscript işlevleri tüm küçük harflere değiştirildi?
- 29. Sistem.InvalidOperationException alıyorum: Koleksiyon değiştirildi; numaralama işlemi açıklanamaz
- 30. Django Middleware Hatası - Middleware 1.7 için değiştirildi
İşte bu! Eminim bu, denediğim şeylerden biriydi, ama belli ki doğru bir şekilde anlamadı. Şimdi çalışıyor :-) Teşekkürler! – tarnfeld
NSTextViewDelegate, NSTextDelegate uygular, ancak NSTextViewDelegate yöntemlerini de kullanabilirsiniz. - (BOOL) textView: (NSTextView *) aTextView shouldChangeTextInRange: (NSRange) effectiveCharRange replacementString: (NSString *) replacementString – valexa
Bu yalnızca kullanıcıdan değişiklikler alır NSTextView ile doğrudan etkileşimde bulunma (örn. metin görünümündeki kullanıcı türleri veya kopyaları kopyalayıp yapıştırır veya keser). TextView.string = @ "Foo"; 'da olduğu gibi textView programsal olarak değiştirirseniz, textView değişiklikleri yakalamaz. Bunun için textview'in textStorage dergisi olmanız gerekir; textView.textStorage.delegate = self; 've (- void) textStorageWillProcessEditing: (NSNotification *) aNotification 'öğesinin kendisinde olan nesnenin sınıfı. Bu, hem kullanıcı güdümlü değişikliklere hem de doğrudan özellik ayarlayıcı değişikliklerine sahip olur. – Joel