我有这个代码:
-(void)startRotation:(RDUtilitiesBarRotation)mode {
rotationTimer = [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(rotateSelectedItem:) userInfo:[NSNumber numberWithInt:mode] repeats:YES];
}
-(void)rotateSelectedItem:(NSNumber*)sender {
float currAngle = [selectedItem currentRotation];
if ([sender intValue] == RDUtilitiesBarRotationLeft) {
[selectedItem rotateImage:currAngle - 1];
}
else {
[selectedItem rotateImage:currAngle + 1];
}
}
-(void)stopRotation {
[rotationTimer invalidate];
rotationTimer = nil;
}
Run Code Online (Sandbox Code Playgroud)
当用户按住按钮时,目标开始旋转视图.当用户释放它时,计时器将停止.
但我这样说:
- [__ NSCFTimer intValue]:无法识别的选择器发送到实例0x4ae360
但是,如果我在userInfo中调用一个NSNumber类,为什么我要收到定时器?
谢谢.
我正在使用UILongPressGestureRecognizer类来处理是否正在选择一个项目.
逻辑如下:用户在1秒内按下一个项目(UIView子类).一旦检测到手势,该项目就会突出显示并可移动.
用户必须在屏幕上移动此项目而不停止触摸它.
我面临的问题是手势识别阴影触摸开始/移动/结束项目类安排运动所必需的.
我试图删除一旦检测到识别出的手势并选择了该项目.但仍然发送消息到手势的句柄而不是调用触摸方法.
任何人都知道如何停止"聆听"手势识别器而不离开屏幕的手指?
谢谢.
这里的代码:
-(void)addGestures
{
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = iItemLongPressTime;
[self addGestureRecognizer:longPress];
[longPress release];
}
- (void)handleLongPress:(UILongPressGestureRecognizer*)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
NSLog(@"Long press Ended");
}
else {
if (self.isSelected) return;
if ([delegate respondsToSelector:@selector(singleTouch:)])
[delegate singleTouch:self];
[self removeGestureRecognizer:[self.gestureRecognizers objectAtIndex:0]];
NSLog(@"Long press detected.");
}
}
Run Code Online (Sandbox Code Playgroud)
正如您在else分支中看到的那样,委托调用允许所有过程将此项标记为已选中,并在删除识别器之后.
我错过了什么?
- 编辑 -
完成!这有效:
#pragma mark Gesture Functions
-(void)addGestures
{
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = iItemLongPressTime;
[self addGestureRecognizer:longPress];
[longPress …
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有几个循环访问NSMutableArray的成员以使用它们.这是一个例子:
for (a=0;a<[items count];a++)
{
iItem *item = [[items objectAtIndex:a] autorelease];
[page.view addSubview:item];
NSLog(@"Item Added: %d\nItem Frame X:%f Y:%f W:%f H:%f",item.itemId,item.frame.origin.x,item.frame.origin.y,item.frame.size.width,item.frame.size.height);
[item setDelegate:page];
if ([[items objectAtIndex:a] zOrder] == 1)
[page.view sendSubviewToBack:item];
else
[page.view bringSubviewToFront:item];
//[item release];
//item = nil;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我在使用alloc/init和release将其添加到MutableArray后以不同的方法创建了iItem对象,那么在使用之后是否必须使用在循环中创建的iItem的版本?
谢谢.
我需要使用以下格式检索当前日期:
YYYY-MM-DD-HH-MM-SS-XXX
但是那些用于毫秒的字母是什么?
我在数据库中有几行,其中一个字段是相关颜色的ARGB值.
我将读取这些表的所有行并将ARGB值十进制转换为UIColor.
我用google搜索了这个,但我没有.
有什么方法可以解决这个问题吗?
谢谢.
我需要知道从安装的设备上卸载我的应用程序的时间.
有什么办法知道吗?
谢谢.
如果我使用以下内容在子视图集合中添加UIView子类:
-(void)loadOutlet
{
myOutlet *out = [[myOutlet alloc] init];
[self addSubview:out];
[out release];
}
-(void)unloadOutlet
{
myOutlet *out = <<HOW CAN I REFERENCE IT FROM subviews array?>>
[out removeFromSuperView];
}
Run Code Online (Sandbox Code Playgroud)
这样做的最佳做法是什么?
从现在开始,我使用isKindOfClass为每个子视图查找使用循环,但是没有更好的方法?
谢谢.
我在NSString
课堂上宣布一个类型的ivar .要初始化此ivar的值,我使用以下代码:
NSString *myVar;
-(void)inAnyMethod
{
myVar = [NSString stringWithFormat:@"%@",theValue];
}
Run Code Online (Sandbox Code Playgroud)
我必须释放这个伊娃吗?根据我的理解,这不是我的责任.但在大多数情况下,我以这种方式使用的字符串会导致泄漏.
我错过了什么?