Android 在单击文本字段时防止表单向上滚动
我有一个简单的身份验证表单,有两个文本字段和一个登录按钮(布局:xbox) 当我编辑第一个文本字段时,这个表单非常适合键盘和状态栏,但是当我切换到第二个文本字段时,表单会向上滚动一点 问题:有人知道如何防止滚动发生吗 [编辑]代码Android 在单击文本字段时防止表单向上滚动,android,ios,sencha-touch,Android,Ios,Sencha Touch,我有一个简单的身份验证表单,有两个文本字段和一个登录按钮(布局:xbox) 当我编辑第一个文本字段时,这个表单非常适合键盘和状态栏,但是当我切换到第二个文本字段时,表单会向上滚动一点 问题:有人知道如何防止滚动发生吗 [编辑]代码 app.views.UserLogin = function (config) { Ext.apply(this, config); this.loginField = new Ext.form.Text({ cls: 'auth-l
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
]
});
};
谢谢你能给我们提供更多的信息吗?窗体是否处于向上移动的滚动视图中?可能设置滚动=否;也许一些代码会有所帮助 请注意,我谈论的是iOS开发,我刚刚发布了一条消息,您不需要指定是否在objective-c中工作。 让我补充一下我的答案,让它更有意义。视图控制器应该使用这些代理,您可能已经在这样做了 使用文本字段委托可以访问-(void)textfieldDiBeginediting:(UITextField*)发送方和-(void)textFieldDidEndEditing:(UITextField*)textField方法。当文本字段开始编辑时,可以将scrollingEnabled设置为否;当文本字段结束编辑时,可以将scrollingEnabled设置为是。它看起来像这样:
-(void)textFieldDidBeginEditing:(UITextField *)sender
{
self.currentTextField = sender;
self.scrollView.scrollingEnabled = NO;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
self.currentTextField = nil;
self.scrollView.scrollingEnabled = YES;
}
或
另一个选项是添加观察者,如果您使用TextView而不是TextFields(或两者的混合),这将非常有用
您可以使用此技术执行相同的操作,在keyboardWillShow方法中停止滚动,然后在keyboardWillHide方法中再次启动滚动
希望我至少能帮上一点忙。滚动=否?这是从哪里来的?很抱歉延迟回复。您可以使用复选框禁用interface builder中的滚动,也可以使用以下命令(如需要)禁用滚动:self.scrollView.scrollEnabled=NO;这将禁用整个web视图的滚动。我只想在您输入文本字段时禁用滚动。我已尝试将textfield委托方法添加到我的应用程序委托中,但从未调用它们。我假设这是因为它们是在Javascript中生成的,而不是在Obj-C中生成的?我不知道在这种情况下如何调用Javascript。要获取要调用的委托方法(使用任何类型的委托),必须通过添加文本字段并告诉文本字段其被委托者是谁来告诉ViewController它就是委托,这样您就可以在interface builder中或在创建文本字段的任何位置执行此操作_myTextField.delegate=self;其中“self”是您刚才添加到的视图控制器。
- (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];
}