Touches began in UITableViewController

后端 未结 5 1912
长发绾君心
长发绾君心 2021-01-17 22:38

I am defining this method in my UITableViewController subclass:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesBegan:to         


        
5条回答
  •  野的像风
    2021-01-17 22:55

    Yep, that should definitely work.

    Make sure User Interaction Enabled is set for the view this controller corresponds to.

    If the view is loaded from a nib/xib, make sure File's Owner is set to be the appropriate class name, and File's Owner's view outlet is connected to proper the view.

    Update: I see this behavior as well, using an app built with the Nav-based App template, but with a View-based App template, it works as expected.

    I think that in the case of a Navigation Controller, the table view embedded in the view controller is getting the event before the view controller does. See the UIView reference (emphasis mine):

    View controllers are themselves descendants of the UIResponder class and are inserted into the responder chain between the managed root view and its superview, which typically belongs to a different view controller. If the view controller’s view does not handle an event, the view controller itself has the option of handling the event before passing the event along to the superview.

    This implies that the view has the first chance to handle the event, and if it does, the view controller won't get it.

    Not exactly clear what you're trying to accomplish, so I'm not sure what solution to offer.

提交回复
热议问题