我在我的应用程序中遇到了NSScrollview的问题,因为它总是从窗口的底部开始.怎么能让它从顶部开始?
我创建了nstextfield的子类,我覆盖了keydown事件,但我的代码不起作用,然后我覆盖了de keyup事件,代码完美无缺.我的keydown代码(不起作用):
-(void)keyDown:(NSEvent *)event {
NSLog(@"Key released: %hi", [event keyCode]);
if ([event keyCode]==125){
[[self window] selectKeyViewFollowingView:self];
}
if ([event keyCode]==126){
[[self window] selectKeyViewPrecedingView:self];
}
}
Run Code Online (Sandbox Code Playgroud)
我的密钥代码(它的工作原理):
-(void)keyUp:(NSEvent*)event
{if ([event keyCode]==125){
[[self window] selectKeyViewFollowingView:self];
}
if ([event keyCode]==126){
[[self window] selectKeyViewPrecedingView:self];
}
if ([event keyCode]==36){
[[self window] selectKeyViewFollowingView:self];
}
}
Run Code Online (Sandbox Code Playgroud)
我没有看到我的keydown代码出现问题.任何建议都将被接受
编辑:我已经读过你必须继承NSTextView而不是NSTextField.
我有一个简单的应用程序,它有一个NSSearchField
,我想知道用户是否按下,例如,箭头键.我不想继承子类,因为我想在我的应用程序中修改IBOutlets的值,而我不能在子类中这样做.
编辑
keyUp:
我在NSSearchField
子类中重写的方法是:
-(void)keyUp:(NSEvent*)event
{
if ([event keyCode]==36){
customers* c= [[customers alloc] init];//customers is the class where i have my IBOulets and my methods
[[self window] selectKeyViewFollowingView:self];// change the first responder
[c searcht:[self stringValue]];//here i want to call a method to make a query and change the stringValues of some IBOulets
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个包含许多商店和 NSSearchfield 的视图,如果用户在搜索字段中按向上箭头,我想对商店做一些有趣的事情。我想在不子类化的情况下执行此操作,因为我在访问其他类的出口时遇到一些问题
编辑:我的插座问题是我无法从我的子类中更改它们的字符串值
if ([event keyCode]==126){
Myclass* c= [[Myclass alloc] init]; // the class that have the outlets
[c searchf];} //function that something interesting with the outlets
Run Code Online (Sandbox Code Playgroud) cocoa ×4
objective-c ×4
xcode ×2
keydown ×1
nsevent ×1
nsscrollview ×1
nstextfield ×1
nsview ×1