除非在其他地方手动点击,否则NSTextField作为FirstResponder没有stringValue

时间:2017-11-17 10:40:32

标签: objective-c xcode nstextfield

我有一个NSView,打开时,它上面的第三个NSTextField变成了FirstResponder来设置光标。如果我打开此表单并开始键入然后单击一个保存按钮,则代码中的NSTextField.stringValue为空,即使它包含视图中的字符。如果我在单击保存按钮之前单击该字段,则字段stringValue在代码中可用。

我相信这在过去有用,任何想法是怎么回事? 我尝试在保存时取消firstResponder,并在点击等时将保存按钮设为第一个响应者。

我目前唯一的解决方案是不要让它成为First Responder并强制用户点击字段,写点东西然后点击有效的保存按钮。

XCode 9.1(9B55)

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

当Willeke在评论中询问我如何设置和删除第一响应者时,我注意到我有错误,将其设置为:

- (void)reachabilityDidChange:(NSNotification *)notification{

    Reachability *reachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
    if (remoteHostStatus == NotReachable) {
        // not reachable
    } else if (remoteHostStatus == ReachableViaWiFi) {
        // reachable via Wifi
    } else if (remoteHostStatus == ReachableViaWWAN) {
        // reachable via WWAN
    }
}

文档声明不应该使用它,正确的方法是:

[self.textfield becomeFirstResponder]

谢谢Willeke!