【问题标题】:Show UIView on long tap on button长按按钮显示 UIView
【发布时间】:2014-10-08 11:05:40
【问题描述】:

也许有人已经问过这个问题,但我没有找到。

我的屏幕上有一些按钮,当用户点击一个按钮(并按住它大约 2 秒)时,一个新的 UIView 应该会出现在用户点击的位置。就像 iOS 键盘上的按钮一样,如果您点击(例如)“E”按钮,它应该会显示一个包含一些额外按钮的新视图。

我没有找到任何解决方案,所以如果你知道如何解决这个问题,请帮助我。

编辑: 我添加了 LongPressGestureRecognizer,但这个手势永远不会被触发。

这是我的代码:

var longPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: "buttonLongPressed:")
    longPressGestureRecognizer.minimumPressDuration = 1.5
    longPressGestureRecognizer.allowableMovement = 1

    for buttonTitle in buttonTitles{
        var button : UIButton!
        if(buttonTitle.length == 1) {
            button = createButtonWithTitle(buttonTitle)
        } else {
            button = createButtonWithImage(buttonTitle)
        }

        button.addGestureRecognizer(longPressGestureRecognizer)
    }


func buttonLongPressed(recognizer : UILongPressGestureRecognizer) -> (Void) {
    NSLog("tapped")
    if(recognizer.state == UIGestureRecognizerState.Failed) {
        NSLog("failed")
    }
    if(recognizer.state == UIGestureRecognizerState.Ended) {
        NSLog("ended")
    }
    if(recognizer.state == UIGestureRecognizerState.Began) {
        NSLog("began")
    }
}

【问题讨论】:

    标签: ios iphone uiview swift uibutton


    【解决方案1】:
        //set gesture recognizer for long press
        UILongPressGestureRecognizer *gestureRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressedHandler:)];
        [button addGestureRecognizer:gestureRecognizer];
        [gestureRecognizer release];
    

    【讨论】:

    • “longPressedHandler:”是什么样的?什么参数?以及如何获取用户点击的位置?
    • 我也想实现这个功能,当用户点击一个按钮并滑动手指时,它总是应该激活用户手指所在的按钮。因为通常,如果你点击一个按钮,这个按钮会保持“活动”状态,直到你松开它。
    【解决方案2】:
     UILongPressGestureRecognizer *longpress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(action:)];
                    longpress.minimumPressDuration = 0.3;
     [<button> addGestureRecognizer:longpress];
    
    - (void)action:(UILongPressGestureRecognizer *)gesture {
    
    }
    

    使用上面的代码sn-p它可以帮助你在长按后触发一个动作,并且可以修改长按时间。

    【讨论】:

    • 好的,谢谢!当用户用手指从一个按钮滑动到另一个按钮时,如何使用此事件?
    • 检查一下这个属性allowableMovement。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2011-07-14
    • 2020-03-21
    相关资源
    最近更新 更多