我注意到一個非常奇怪的行爲UITextView
。UITextViewTextDidChangeNotification調用了兩次
當我註冊UITextViewTextDidChangeNotification
時,對於每次擊鍵都會調用兩次回調。
委託回調textViewDidChange:(UITextView *)textView
只能正確調用一次。
有沒有人注意到同樣的事情?我真的只是在回調中添加觀察者到默認UITextView
和YES
,我正在檢查發送通知的UITextView
是否是我創建的(我的測試項目中只有1個)。
對於那些你們誰真的需要一些代碼如下:
UITextView *textView = [[UITextView alloc] initWithFrame:textViewFrame];
[self.view addSubview:textView];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(textDidChange:)
name:UITextViewTextDidChangeNotification
object:nil];
完蛋了。
textDidChange:在每次擊鍵時調用兩次。
BIG編輯
我很爲混亂很對不起你。我應該清除我將UITextView本身添加爲觀察者。
示例代碼也是錯的,對不起。
正確的示例代碼將是:
- (instancetype)init
{
self = [super init];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(textDidChange:)
name:UITextViewTextDidChangeNotification
object:nil];
}
}
任何猜測爲什麼它被稱爲兩次,如果我加入的TextView自己作爲此通知的觀察者?
你可以添加一些代碼嗎? – lucianomarisi
好吧,這真的是最簡單的使用textView。但肯定的是,我添加了一些「示例代碼」 – Cabus
使用您最簡單的代碼,我只收到一個通知,所以我想必須有其他事情發生。 – lucianomarisi