當用戶完成編輯時,我想讓我的文本字段退出第一響應者,就像他們按回車鍵時一樣。委託方法正在調用,但我現在沒有工作,這樣做的正確方法是什麼?NSTextField辭職第一響應者
- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor
{
[fieldEditor resignFirstResponder];
return YES;
}
當用戶完成編輯時,我想讓我的文本字段退出第一響應者,就像他們按回車鍵時一樣。委託方法正在調用,但我現在沒有工作,這樣做的正確方法是什麼?NSTextField辭職第一響應者
- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor
{
[fieldEditor resignFirstResponder];
return YES;
}
從上-resignFirstResponder方法文檔:
使用NSWindow makeFirstResponder: 方法,而不是此方法,使一個 o對第一響應者進行響應。從不 直接調用此方法。
此代碼應該這樣做:
[myWindow makeFirstResponder:nil];
我在iPhone編程方面的專家,但還需要實現的方法是「textFieldShouldReturn」實現這樣的:
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
[theTextField resignFirstResponder];
return YES;
}
我相信你正在尋找的NSControl委託方法:
- (void)controlTextDidEndEditing:(NSNotification *)notif
在NSTextField
委託(IB中輕鬆設置)實現此方法。
那麼你的要求更改響應,如
[self.window selectNextKeyView:self]
應該工作。
- (void)controlTextDidEndEditing:(NSNotification *)obj {
[self.window makeFirstResponder:view];
}
其中「view」是NSTextView控件的父級NSView。
這是正確的。它適用於牀單 – 2016-06-09 10:30:47
它導致崩潰,但我認爲這是另一個問題,當我修復它時,我認爲您的解決方案將工作。謝謝。 – avizzini 2010-12-13 17:59:23
這個問題絕對是其他地方。這是導致* nothing *成爲窗口的第一響應者的正確方法。 – 2010-12-13 19:17:26
當我調用它時,它會導致窗口詢問控件控件的無限循環:textShouldEndEditing:,它調用makeFirstResponder:ad infinitum。 – SG1 2013-03-12 16:30:46