我正在构建一个iphone webapp并且有一个带有输入字段的页面.我希望该字段在显示时向上滚动到虚拟键盘上方.我已经尝试在输入焦点事件上放置一个scrollTo(x,y)(即在键盘出现之前),但是当我开始键入页面时再次向上滚动(可能是基于默认的移动safari行为).我也尝试过设置按键事件处理程序,但是阻止这些事件的传播只是禁用了键盘,尽管它确实阻止了滚动.
有没有什么办法来强制页面是在一个特定的位置(与输入字段只是在键盘上方),当虚拟键盘显示出来,当我恢复打字不会将其移动?
我正在尝试将同步库转换为使用内部异步IO框架.我有几个方法看起来像这样:
def foo:
....
sync_call_1() # synchronous blocking call
....
sync_call_2() # synchronous blocking call
....
return bar
Run Code Online (Sandbox Code Playgroud)
对于每个同步函数(sync_call_*),我编写了一个相应的异步函数,它接受一个回调.例如
def async_call_1(callback=none):
# do the I/O
callback()
Run Code Online (Sandbox Code Playgroud)
现在对于python新手问题 - 最简单的方法是翻译现有方法以使用这些新的异步方法吗?也就是说,foo()上面的方法现在需要:
def async_foo(callback):
# Do the foo() stuff using async_call_*
callback()
Run Code Online (Sandbox Code Playgroud)
一个明显的选择是将回调传递给每个异步方法,该方法有效地"恢复"调用"foo"函数,然后在方法的最后调用回调全局.但是,这会使代码变得脆弱,丑陋,我需要为每次调用async_call_*方法添加一个新的回调.
有没有一种简单的方法可以使用python成语,例如生成器或协同程序?