2012-10-06 142 views
6

我是移动web/dev的新手。我的应用程序使用jquery-mobile,phonegap和Compass(s​​css)。防止页面滚动焦点切换

我有我的登录页面上的一个问题:

标志和字段包含在标准的“格”集装箱(数据角色=“内容”数据类型=“垂直”)。背景是彩色的。

当将焦点从登录字段切换到密码字段时,页面向上滑动,这是我不希望发生的事情。我希望我的徽标和字段保持原样,就像Skype iOS应用登录页面一样。

会出现以下情况:

bug description

我已经尝试了多种技巧,试图阻止滚动事件,或迫使页面滚动到0,0,但没有成功。

我现在正在考虑一种新的策略,可能会使用顶部相对定位标识和字段,并捕捉焦点事件以自己滚动页面,在键盘上滑动(通过动画顶部相对定位坐标)。

虽然这似乎是可行的,我想知道如果这是种各地使用Skype的iOS应用程序团队工作...

任何意见,在这种特殊情况下使用的工艺是值得欢迎的!

欢呼声,

弗雷德

+0

我敢肯定Skype的iOS应用程序使用本地视图来显示登录字段,而不是Phonegap如何使用WebView工作。也许试图将身高改为100%或在页面打开时将登录名/密码置于上半部分。 –

+0

@ GeekNum88当然。 Soleshoe正在使用WebView寻找解决方案。 – Zulakis

+0

@ Zulakis - 愚蠢的输入键 - 我没有输入完毕...叹息 –

回答

3

我没有测试过这还,但不e.preventDefault()停止的问题?通常你使用e.preventDefault()来停止默认的滚动/拖拽行为。

$(document).bind('focus', function(e){ 
    e.preventDefault(); 
}); 

或更好

$(element).bind('focus', function(e){ 
    e.preventDefault(); 
}); 

$(document).bind('touchstart', function(e){ 
    e.preventDefault(); 
}); 

请问输入字段更好地工作?

$(":input").live({ 
    focus: function(e) { 
    e.preventDefault(); 
    } 
}); 
+0

第一个和第二个解决方案对我的问题没有任何帮助。第三种解决方案可防止用户切换焦点......第四种解决方案确实可以防止键盘在登录字段上调用.focus()时滑动(但触摸字段时键盘确实滑动,问题依然存在) ... – soleshoe

+0

可能这样做没有jQuery的? –

1

我最后还是没有找到任何编码解决方案来处理我的问题成功,但是我注意到一个chirurgical定位不准我字段之间切换时,带状装饰画面。

一旦键盘可见,整个登录屏幕的可用空间不得超过可用空间,即200像素。此外,为了防止在切换场时滚动,最后输入场中心位置不得超过100像素最大值。使用CSS可以使用填充和边距来达到理想的效果。

应该可以通过移除键盘“字段导航栏”来获得额外的垂直空间,但我不知道该怎么做,无论是:/

enter image description here

+0

看看这个解决方案:http://stackoverflow.com/a/39584526/1043231 – Dominik