奇怪的NSTextField setSelectable问题

时间:2011-03-01 04:59:48

标签: cocoa macos

嘿,我有一个奇怪的问题。我想知道是否有人可以帮助我理解它。我有一个文本字段和一个日期选择器,只需按一下按钮就可以弹出文本字段。当日期选择器出现时,我将其下方的文本字段设为不可编辑或可选择,当日期选择器消失时,我再次选择它。我遇到的问题是即使我正在调用setSelectable:NO,当我将鼠标悬停在它上面时,文本字段仍会显示选择光标(虽然我实际上无法在其中选择任何内容)。

这里是踢球者,如果我将断点扔进按钮代码并等待一秒左右,那么一旦我点击继续,文本字段就会正常因为我希望显示正确的光标而无法选择。

这是我的按钮代码。有人有主意吗?

- (IBAction) clicked:(id)sender
{
    if([datePickerView isHidden] == NO)
    {
        [summaryTextArea setEnabled:YES];
        [summaryTextArea setEditable:YES];
        [summaryTextArea setSelectable:YES];
        [datePickerView setHidden:YES];
    }
    else
    {
        [summaryTextArea setEnabled:NO];
        [summaryTextArea setEditable:NO];
        [summaryTextArea setSelectable:NO];
        [datePickerView setHidden:NO];
    }
}

如果有人想要查看更多代码段,请告诉我,我可以合作一个小型演示项目。谢谢!

修改

这是一个我掀起的简单测试应用程序。希望它有用。 http://dl.dropbox.com/u/917639/ExampleSelectable.zip

1 个答案:

答案 0 :(得分:0)

我修好了......有点儿。它至少起作用,但看起来有点像黑客。我只是在我的点击处理程序中配对以下调用

[summaryTextArea addCursorRect:summaryTextArea.bounds cursor:[NSCursor IBeamCursor]]; 
[summaryTextArea removeCursorRect:summaryTextArea.bounds cursor:[NSCursor IBeamCursor]];