【问题标题】:UIControlEventTouchCancel not triggering the functionUIControlEventTouchCancel 未触发该功能
【发布时间】:2013-09-09 07:04:16
【问题描述】:

我的 xib 文件中有两个按钮。这是我的接口文件

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIButton *testButtonOut;
@property (strong, nonatomic) IBOutlet UIButton *button2;

- (IBAction)testButton:(id)sender;
- (void)buttonReleased;

@end

这些是我的实现文件中两个函数的实现

- (IBAction)testButton:(id)sender {
    button2.highlighted=YES;
   [testButtonOut addTarget:self action:@selector(buttonReleased) forControlEvents:UIControlEventTouchCancel];
}

- (void)buttonReleased{
    button2.highlighted=NO;
}

当我单击 testButton 并释放时,它不会触发 buttonReleased 函数(我使用断点来检查它),但是 如果我将 UIControlEventTouchCancel 更改为 UIControlEventTouchUpInside 它会在我单击它时触发 buttonReleased 函数但是我不想在按钮单击时触发它我想在按钮释放时触发它,我也尝试过 TouchUpOutside 但也没有触发。我应该使用哪个事件以便在我释放时调用 buttonReleased 函数点击按钮事件?

【问题讨论】:

  • 如果您想在手指超出控件边界时发生事件,请使用“UIControlEventTouchUpOutside”。
  • 正如我提到的,TouchUpOutside 也不起作用

标签: ios objective-c xcode uibutton uicontrolevents


【解决方案1】:

代替
“UIControlEventTouchCancel”使用
“UIControlEventTouchUpInside。”

【讨论】:

  • 我需要释放按钮时触发该功能。完整阅读我的问题。
  • 某些触摸事件不适用于 UIButton。如果您想根据您的要求实现,您可以使用 UIResponder 链的 touchesEnded 方法。
  • 我应该如何添加 touchesEnded 以按照我想要的方式行事,我尝试过这样的事情,但是当我单击并释放按钮时,这并没有被触发 -(void)touchesEnded:(NSSet *)touches withEvent :(UIEvent *)event{ forgotUnderline.highlighted=NO; }
  • 您必须添加以下行。 UItouch * touch=[touches any object]; if(touch.view==your_button){forgotUnderline.highlighted=NO;}
  • 是的,但是当我释放按钮点击时仍然没有触发 touchesEnded 方法。
猜你喜欢
  • 2021-07-16
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 2022-08-22
  • 2021-11-27
相关资源
最近更新 更多