我必须在这里遗漏一些明显的东西,但......
UIControl有一个方法
- (void)addTarget:(id)target action:(SEL)action forControlEvents: (UIControlEvents)controlEvents
Run Code Online (Sandbox Code Playgroud)
它允许您添加要在任何给定的controlEvent发生时调用的操作.ControlEvents是一个事件的位掩码,它告诉你触摸是否下降,内部,或被拖动等等,其中大约有16个,你或他们在一起,当它们中的任何一个发生时被调用.
选择器可以具有以下签名之一
- (void)action
- (void)action:(id)sender
- (void)action:(id)sender forEvent:(UIEvent *)
Run Code Online (Sandbox Code Playgroud)
这些都没有告诉你控制事件位掩码是什么.UIEvent略有不同,它与实际的触摸事件有关,而且(我认为)不包含UIControlEvent.发送方(UIControl)也无法找到控制事件.
我想有一个处理大量控制事件的方法,因为我有一些共同的代码,无论发生了哪些事件或事件,但我仍然需要知道UIControlEvents用于某些特定处理.
我错过了一种方法来找出在调用操作时使用了什么UIControlEvents,或者我是否真的必须将我的代码分成
-(void)actionWithUIControlEventX;
-(void)actionWithUIControlEventY;
Run Code Online (Sandbox Code Playgroud) 我正在尝试传递CGRect:
SEL frameSel = NSSelectorFromString(@"setFrame:");
CGRect rect = CGRectMake(10, 10, 200, 100);
[object performSelector:frameSel withObject:rect ];
Run Code Online (Sandbox Code Playgroud)
但这不编译
我也尝试过:
SEL frameSel = NSSelectorFromString(@"setFrame:");
CGRect rect = CGRectMake(10, 10, 200, 100);
NSValue * value = [NSValue valueWithCGRect:rect];
[object performSelector:frameSel withObject:value ];
Run Code Online (Sandbox Code Playgroud)
实际上,这确实编译但是当我调试时,框架没有正确设置:
po object
<UILabel: 0x39220f0; frame = (0 0; 200 100); text = 'reflectionLabel'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x3922240>>
Run Code Online (Sandbox Code Playgroud)
但它应该是frame =(10 10; 200 100)
我怎么解决这个问题?
先感谢您!
我正在尝试在iPhone上运行Lua脚本.有可能这样做吗?
我如何开始使用Lua?我找不到东西.我唯一能找到的是这应该是可能的,但我想知道如何.
iphone ×2
action ×1
cocoa-touch ×1
events ×1
lua ×1
objective-c ×1
scripting ×1
selector ×1
targets ×1