gpt4 book ai didi

ios - UILongPressGestureRecognizer 中的 While 循环不起作用

转载 作者:行者123 更新时间:2023-11-29 02:17:57 24 4
gpt4 key购买 nike

我试图在长按 View 时调整 textField 的位置,但由于某种原因,while 循环永远不会停止运行。我的代码如下所示:

func buttonLongPressed(gestureRecognizer:UIGestureRecognizer){
if textEdit.editing == true{
self.textEdit.endEditing(true)
}
while gestureRecognizer.state == UIGestureRecognizerState.Began{
println("BEGAN")
self.textEdit.frame = CGRectMake(0, gestureRecognizer.locationInView(self.view).y, self.view.frame.width, 44)

}
}

我不明白为什么这不起作用,以及如何以任何其他方式做到这一点。

如有任何建议,我们将不胜感激。

最佳答案

手势识别器在其状态发生变化时调用您的操作方法——从 while 循环中轮询状态是无效的,它永远不会改变。

它可能是这样工作的:

  • 事件是从触摸屏发送的,带有唤醒您的应用程序的信号。
  • 手势识别器查看排队的事件并决定进入“开始”状态。
  • 手势识别器代码调用您的操作方法 (buttonLongPressed)您的代码进入 while look 并重复读取 gestureRecognizer.state

你可以看到,如果你的操作方法永远不会返回,手势识别器将永远不会再次醒来并查看新的输入。

你可以像这样改变你的函数:

func longPressAction( g:UILongPressGestureRecognizer )
{
switch g.state
{
case: .Changed
{
// handle one drag update... but don't loop
}
}
}

关于ios - UILongPressGestureRecognizer 中的 While 循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28532512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com