gpt4 book ai didi

ios - 突出显示时 UIButton 周围不需要的不可见检测区域

转载 作者:行者123 更新时间:2023-11-29 01:56:59 26 4
gpt4 key购买 nike

我正在 viewDidLoad 的通用设备应用程序中创建"is"和“否”UIButton,如下所示:

   let yesUnpressedTexture = UIImage(contentsOfFile:NSBundle.mainBundle().resourcePath!.stringByAppendingPathComponent("yesButtonUnpressed.png"))!
let yesPressedTexture = UIImage(contentsOfFile:NSBundle.mainBundle().resourcePath!.stringByAppendingPathComponent("yesButtonPressed.png"))!
let buttonWidth = yesUnpressedTexture.size.width
var yesButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
yesButton.setImage(yesUnpressedTexture, forState: UIControlState.Normal)
yesButton.setImage(yesPressedTexture, forState: UIControlState.Highlighted)
yesButton.frame = CGRect(x: device.x/2 - buttonWidth * worldScale - worldScale * 40, y: device.y/2 - worldScale * 50, width: buttonWidth * worldScale, height: worldScale * 200)
yesButton.addTarget(self, action: "deleteProgress:", forControlEvents: UIControlEvents.TouchUpInside)
self.deleteView.addSubview(yesButton)

let noUnpressedTexture = UIImage(contentsOfFile:NSBundle.mainBundle().resourcePath!.stringByAppendingPathComponent("noButtonUnpressed.png"))!
let noPressedTexture = UIImage(contentsOfFile:NSBundle.mainBundle().resourcePath!.stringByAppendingPathComponent("noButtonPressed.png"))!
var noButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
noButton.frame = CGRect(x: device.x/2 + worldScale * 40, y: device.y/2 - worldScale * 50, width: buttonWidth * worldScale, height: worldScale * 200)
noButton.setImage(noUnpressedTexture, forState: UIControlState.Normal)
noButton.setImage(noPressedTexture, forState: UIControlState.Highlighted)
noButton.addTarget(self, action: "cancelDelete:", forControlEvents: UIControlEvents.TouchUpInside)
self.deleteView.addSubview(noButton)

它们在我的 iPad 上测试时加载和工作正常,但是当我在任何 iPhone 模拟器上测试时会发生一些奇怪的事情。如果您将手指从任一按钮上移开以取消触摸,则必须将其远离按钮才能执行此操作。相应的按钮会一直突出显示,直到用户手指超出我在照片中显示的突出显示框之外。

enter image description here

有人知道如何解决这个问题吗?

我尝试使用 CGRectMake 设置框架,但没有任何变化。

最佳答案

这实际上是操作系统的一项功能以及触摸事件的工作方式。当您触摸 UIControl(在您的例子中是 UIButton)时,操作系统开始跟踪您的触摸和移动,并且您的控件周围有一个预定义的边界矩形。只有当您将手指移出此边界后,触摸才被认为已退出控件 - 这是当控件失去焦点(突出显示)以及 TouchDragExitTouchDragOutside 时事件被触发。

如果你想改变这个,你可以通过创建一个 UIButton 子类并覆盖 continueTrackingWithTouch(_:withEvent:) 方法来自定义跟踪行为,这样你就可以结束根据您自己的逻辑进行跟踪。

关于ios - 突出显示时 UIButton 周围不需要的不可见检测区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30738169/

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