我有一个简单的身份验证表单,包含两个文本字段和一个登录按钮(布局:xbox) 当我编辑第一个文本字段时,此表单完全适合键盘和状态栏,但是当我切换到第二个文本字段时,表单会向上滚动一点。
问题:有没有人知道如何防止滚动发生?
[编辑]代码
app.views.UserLogin = function (config) {
Ext.apply(this, config);
this.loginField = new Ext.form.Text({
cls: 'auth-login',
width:"100%",
allowBlank: false,
placeHolder:'Identifiant',
border:'0 0 1 0',
});
this.passwordField = new Ext.form.Password({
cls: 'auth-password',
width:"100%",
allowBlank: false,
placeHolder:'Mot de passe',
border:'0',
});
this.loginBtn = new Ext.Button({
width:"200px",
text: "Connect",
handler: this.onLoginBtnFn,
scope: this,
cls:'auth-button',
});
this.authFieldSet = new Ext.form.FieldSet({
width:"90%",
cls:'auth-fieldset',
items:[this.loginField,this.passwordField]
});
//constructor
app.views.UserLogin.superclass.constructor.call(this, {
//dockedItems: [this.toolbar],
fullscreen: true,
cls:'auth',
layout: 'vbox',
items: [
this.authFieldSet,
this.loginBtn
]
});
};
由于
答案 0 :(得分:0)
您能否提供更多信息?滚动视图中的表单是否向上移动?可能设置滚动=否;也许一些代码会有所帮助。
请注意我在谈论iOS开发时,我刚刚发布了你没有说明你是否在Objective-c中工作。
让我回答一下我的答案,这样更有意义。视图控制器应该使用您可能已经执行此操作的这些委托。
使用文本字段委托alows访问 - (void)textFieldDidBeginEditing:(UITextField *)sender和 - (void)textFieldDidEndEditing:(UITextField *)textField方法。当ttext字段开始编辑时,您可以设置scrollingEnabled = NO,当文本字段结束编辑时,您可以设置scrollingEnabled = YES。它看起来像这样:
-(void)textFieldDidBeginEditing:(UITextField *)sender
{
self.currentTextField = sender;
self.scrollView.scrollingEnabled = NO;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
self.currentTextField = nil;
self.scrollView.scrollingEnabled = YES;
}
或强>
另一种选择是添加一个观察者,如果您使用TextViews而不是TextFields(或两者的混合),这很有用。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:self.view.window];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:self.view.window];
}
- (void)viewWillDisappear:(BOOL)animated
{
[_currentTextField resignFirstResponder];
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}
你使用这种技术做同样的事情,在keyboardWillShow方法中停止滚动,然后在keyboardWillHide方法中再次启动它。
希望我至少帮助一点。