You are setting the position of the UIView and not the ChipmunkBody. Chipmunk has no way of knowing when you update the position of an object for a different library. The position from the physics is copied to the view every frame after stepping. You need to set the position of the body instead and let the DisplayLink callback copy the body's position to the view.
Now, while the above will let you know when the collision occurred, the physics won't work very well. The problem is that by setting the position of the body you are causing it to "teleport" to it's new position. If you teleport the card into the wall, Chipmunk will try and push it out a little each frame. This sort of looks okay. The big problem is when you repeatedly set the position of a body to be in the wall using the touch events. The body will jitter as the position you are assigning to it fights with what Chipmunk is trying to tell it to do.
What you really want to do is use the ChipmunkMultiGrab class. It automatically connects joints from the touches to the bodies and moves them around using real forces. Then when you try and drag a card into the immovable wall, Chipmunk can generate an even large force to prevent it from going through.