相关疑难解决方法(0)

如何正确子类UIControl?

我不想要UIButton或类似的东西.我想UIControl直接子类化并制作我自己的非常特殊的控件.

但由于某种原因,我所覆盖的任何方法都没有被调用过.目标动作的东西起作用,目标接收适当的动作消息.但是,在我的UIControl子类中,我必须捕获触摸坐标,这样做的唯一方法似乎是覆盖这些人:

- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
    NSLog(@"begin touch track");
    return YES;
}

- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
    NSLog(@"continue touch track");
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

它们永远不会被调用,即使它UIControl是使用指定的初始化程序实例化的UIView,initWithFrame:.

我可以找到的所有示例总是使用UIButtonUISlider作为子类的基础,但我想更接近,UIControl因为这是我想要的源:快速和未延迟的触摸坐标.

objective-c uicontrol ios

66
推荐指数
5
解决办法
4万
查看次数

如何实现UITableView的滑动以删除UICollectionView

我想问一下如何在UICollectionView中实现UITableView滑动删除的相同行为.我试图找到一个教程,但我找不到任何.

另外,我使用PSTCollectionView包装器来支持iOS 5.

谢谢!

编辑:滑动识别器已经很好了.我现在需要的是取消删除模式时与UITableView相同的功能,例如当用户点击单元格或表格视图中的空白区域时(即,当用户点击删除按钮之外时).UITapGestureRecognizer不起作用,因为它只检测触摸释放时的点击.UITableView在手势开始时(而不是在释放时)检测到触摸,并立即取消删除模式.

uitableview ios uicollectionview

18
推荐指数
4
解决办法
2万
查看次数

如何在UISlider中启用"点按和滑动"?

我想要的是一个UISlider让用户不仅可以在他开始时滑动thumbRect,而且还可以在其他地方点击的时候滑动.当用户点击滑块但在滑块之外时thumbRect,滑块应跳转到该值,然后仍然保持用户的滑动手势.

到目前为止我尝试过的是在这个建议中实现UIGestureRecognizer的子类.当它thumbRect发生在外面某处的触地时,它就开始了.问题是滑块设置其值但随后进一步滑动手势被忽略,因为触摸识别器已经窃取了触摸.

如何实现滑块,您可以在任何地方点按但仍然可以立即滑动?


编辑:ali59a非常友好地添加我现在所做的一个例子.这需要再次抬起手指,之后我可以触摸并拖动滑动(水龙头不是我想要的,我需要立即'触摸和滑动').

uislider uigesturerecognizer ios uitapgesturerecognizer

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

您如何检测没有移动或持续时间的 SwiftUI touchDown 事件?

我试图检测手指何时第一次接触 SwiftUI 中的视图。我可以用 UIKit Events 很容易地做到这一点,但在 SwiftUI 中无法解决这个问题。

我已经尝试了最小移动为 0 的 DragGesture,但在您的手指移动之前它仍然不会改变。

TapGesture 仅在您抬起手指时才起作用,并且无论我将参数设置为什么,LongPressGesture 都不会足够快地触发。

DragGesture(minimumDistance: 0, coordinateSpace: .local).onChanged({ _ in print("down")})

LongPressGesture(minimumDuration: 0.01, maximumDistance: 100).onEnded({_ in print("down")})
Run Code Online (Sandbox Code Playgroud)

我想在手指与视图接触后立即检测 touchDown 事件。Apple 的默认手势对距离或时间都有限制。

更新:这不再是问题,因为 Apple 似乎更新了 DragGesture 的工作方式,或者我可能遇到了特定的上下文错误。

gesture swift swiftui

16
推荐指数
6
解决办法
8257
查看次数

UITouch触及手指方向和速度

如何在touchmoved功能中获得手指移动的速度和方向?

我想获得手指速度和手指方向,并将其应用于UIView类方向移动和动画速度.

我读了这个链接,但我无法理解答案,此外它并没有解释我如何检测方向:

UITouch移动速度检测

到目前为止,我尝试了这段代码:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *anyTouch = [touches anyObject];
    CGPoint touchLocation = [anyTouch locationInView:self.view];
    //NSLog(@"touch %f", touchLocation.x);
    player.center = touchLocation;
    [player setNeedsDisplay];
    self.previousTimestamp = event.timestamp;    
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:self.view];
    CGPoint prevLocation = [touch previousLocationInView:self.view];
    CGFloat distanceFromPrevious = [self distanceBetweenPoints:location :prevLocation];
    NSTimeInterval timeSincePrevious = event.timestamp - previousTimestamp;

    NSLog(@"diff time %f", timeSincePrevious);
}
Run Code Online (Sandbox Code Playgroud)

iphone uitouch ios

12
推荐指数
2
解决办法
2万
查看次数

iOS:为什么touchesBegan在UIView的某个特定区域有一些延迟

我正在制作一个自定义键盘,我的处境非常奇怪.

我注意到当我在UIView(inputView)的左后方(大约20个像素)处捕获事件touchesBegan时,我会在这里有一些延迟.我在touchesBegan中所做的任何动作都会比其他区域执行得慢.

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
{
self.keypop.hidden = false
}

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
{
self.keypop.hidden = true
}
Run Code Online (Sandbox Code Playgroud)

这个问题会影响我的应用程序的性能.在这个例子中,当我触摸左后方时,我不会看到keypop出现因为self.keypop.hidden显示延迟了.

我不知道为什么,或者这是iOS 9的错误?我一直坚持这个麻烦一个星期.

delay touchesbegan ios swift

7
推荐指数
2
解决办法
1570
查看次数

触摸时在UITableView截面标题上显示选择突出显示

默认情况下,在UITableView上,当您触摸单元格时,它将进入选定模式,并以灰色突出显示.

在我们的应用程序中,您可以触摸标题,然后转到另一个页面.

我们希望用户在触摸某个部分时获得相同类型的视觉反馈,就像他们触摸一个单元格时一样.也就是说,它通过进入"选定"模式并使背景变得更暗来指示选择来响应.

触摸UITableView部分时不会发生这种情况.该部分不进入选择模式.它不会变灰.

我们尝试过一个透明按钮,它跨越了一个带有背景图像的自定义UIView,并启用了"逆转突出显示",但结果不是非常敏感而且很糟糕.

实现此类功能的最佳策略是什么?

objective-c uitableview ios

2
推荐指数
1
解决办法
2257
查看次数