相关疑难解决方法(0)

UIButton触控拖动/退出命中区的大小有多大?

好吧,我想最好表明我的意思:

UIButton的动画对拖动动作做出反应

您可以清楚地看到,一旦我们触摸按钮并移出它,随后的移入事件会触发从远处按钮状态的变化.

虽然这种行为对于所有UIButton都很自然,但我无法谷歌解决方案来改变它.

有没有办法减少这种类型的UIButton灵敏度的命中区域?我希望它减少,因为我觉得按钮足够大,它会提供更好的用户体验以及上/下音效.

UPD: UIButton的以下覆盖代码发布在另一个线程中:

- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
{
    CGFloat boundsExtension = 25.0f;
    CGRect outerBounds = CGRectInset(self.bounds, -1 * boundsExtension, -1 * boundsExtension);

    BOOL touchOutside = !CGRectContainsPoint(outerBounds, [touch locationInView:self]);
    if(touchOutside)
    {
        BOOL previousTouchInside = CGRectContainsPoint(outerBounds, [touch previousLocationInView:self]);
        if(previousTouchInside)
        {
            NSLog(@"Sending UIControlEventTouchDragExit");
            [self sendActionsForControlEvents:UIControlEventTouchDragExit];
        }
        else
        {
            NSLog(@"Sending UIControlEventTouchDragOutside");
            [self sendActionsForControlEvents:UIControlEventTouchDragOutside];
        }
    }
    return [super continueTrackingWithTouch:touch withEvent:event];
}
Run Code Online (Sandbox Code Playgroud)

它改变了拖入/拖出事件使用的命中区域扩展,但按钮向上/向下状态切换的方式与之前完全相同.

cocoa-touch button touch uibutton ios

9
推荐指数
1
解决办法
2239
查看次数

TouchUpInside UIButton之外的边界

我现在正想要在Swift下熟悉UIKit并找出以编程方式添加UI元素的最佳方法.然而,我发现触摸可以在按钮之外结束,它仍然开始注册为TouchUpInside事件.下面的ViewController来自单个视图应用程序,可以直接开始触摸,比如按钮17,在按钮18上结束它仍然有buttonAction()声明"按钮点击:17".

知道我在这里缺少什么吗?(编辑:这是在Xcode 6 beta 3 BTW下.)

// ViewController.swift

import UIKit

class ViewController: UIViewController {
    let scrollView:UIScrollView = UIScrollView()

    var GWIDTH:Float = 0.0
    var GHEIGHT:Float = 0.0


    override func viewDidLoad() {
        super.viewDidLoad()

        GWIDTH = self.view.bounds.size.width
        GHEIGHT = self.view.bounds.size.height

        scrollView.frame = CGRectMake(10, 10, GWIDTH-10, GHEIGHT-20)
        scrollView.contentSize = CGSize(width:GWIDTH-20, height: 0)
        self.view.addSubview(scrollView)

        for currentTag in 1...30{
            var currentButton = UIButton.buttonWithType(UIButtonType.System) as UIButton
            currentButton.frame = CGRectMake(100, scrollView.contentSize.height, 100, 50)
            currentButton.backgroundColor = UIColor.greenColor()
            currentButton.setTitle("Test Button \(currentTag)", forState: UIControlState.Normal)
            currentButton.tag = currentTag
            currentButton.addTarget(self, action: "buttonAction:", forControlEvents: …
Run Code Online (Sandbox Code Playgroud)

uibutton ios swift

5
推荐指数
1
解决办法
1450
查看次数

UIControlEventTouchDragExit仅触发~100像素

当手指/触摸将UIButton留在目标C中用于iphone时,我试图"获取".我在另一个答案中告诉我使用UIControlEventTouchDragExit,但是当触摸距离按钮大约100个像素时,此事件才会触发,而我希望它立即生效.苹果文档说这是根据边界,但我的理解是边界和框架是相同的,除非你旋转UI按钮(或其他)

iphone events objective-c

3
推荐指数
1
解决办法
803
查看次数

标签 统计

ios ×2

uibutton ×2

button ×1

cocoa-touch ×1

events ×1

iphone ×1

objective-c ×1

swift ×1

touch ×1