UIScrollView のサブクラスがあり、デリゲートでもあります。
次のプロトコル関数を呼び出した場合:
- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
{
id element;
NSEnumerator *setEnum = [touches objectEnumerator];
while ((element = [setEnum nextObject]) != nil)
{
NSLog(@"element:%@", element);
}
return [super touchesShouldBegin:touches withEvent:event inContentView:view];
}
NSLog が示している唯一のものは次のとおりです。
element:<UITouch: 0x15a9a0> phase: Ended tap count: 3 window: <UIWindow: 0x392390; frame = (0 0; 320 480); layer = <UIWindowLayer: 0x382cd0>> view: <UIButton: 0x3a5e90; frame = (0 0; 106 138); opaque = NO; layer = <CALayer: 0x3a3e90>> location in window: {228, 126} previous location in window: {227, 126} location in view: {89.6667, 77} previous location in view: {88.3333, 77}
問題は、NSSet の内容が 1 つの大きな NSString として表示されることです。objectEnumerator から allObjects を要求すると、NSArray 内のオブジェクトが 1 つだけ取得されます。NSLog とまったく同じオブジェクト (NSString) が表示されています。
私が何か間違ったことをしているのか、それとも NSSet がただ 1 つの NSString を与えているのが普通ではないのか、誰か教えてください。
ありがとうございました!