यहाँ मेरी समाधान है मेरे एप्लिकेशन में नेविगेशन बार की "मालिक"), applicationDidFinishLaunchingWithOptions में:
नेविगेशन बार दृश्य प्राप्त करें और पूरे दृश्य को इशारा पहचानकर्ता जोड़ें: appDel में फिर
// Get the nav bar view
UINavigationBar *myNavBar = nil;
for (UIView *view in [self.window.rootViewController.view subviews]) {
if ([view isKindOfClass:[UINavigationBar class]]) {
NSLog(@"Found Nav Bar!!!");
myNavBar = (UINavigationBar *)view;
}
}
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self
action:@selector(backButtonLongPress:)];
[myNavBar addGestureRecognizer:longPress];
NSLog(@"Gesture Recognizer Added.");
eGate, में - (शून्य) backButtonLongPress: (आईडी) इस
अगर इशारा वापस बटन की सीमा के भीतर होता है चेक देखने के लिए: पर backButtomItem नहीं था एक कस्टम दृश्य करने के लिए एक इशारा पहचानकर्ता जोड़ना
if ([sender state] == UIGestureRecognizerStateBegan) {
// Get the nav bar view
UINavigationBar *myNavBar = nil;
for (UIView *view in [self.window.rootViewController.view subviews]) {
if ([view isKindOfClass:[UINavigationBar class]]) {
NSLog(@"Found Nav Bar!!!");
myNavBar = (UINavigationBar *)view;
}
}
// Get the back button view
UIView *backButtonView = nil;
for (UIView *view in [myNavBar subviews]) {
if ([[[view class] description] isEqualToString:@"UINavigationItemButtonView"]) {
backButtonView = view;
NSLog(@"Found It: %@", backButtonView);
NSLog(@"Back Button View Frame: %f, %f; %f, %f", backButtonView.frame.origin.x, backButtonView.frame.origin.y, backButtonView.frame.size.width, backButtonView.frame.size.height);
}
}
CGPoint longPressPoint = [sender locationInView:myNavBar];
NSLog(@"Touch is in back button: %@", CGRectContainsPoint(backButtonView.frame, longPressPoint) ? @"YES" : @"NO");
if (CGRectContainsPoint(backButtonView.frame, longPressPoint)) {
// Place your action here
}
// Do nothing if outside the back button frame
}
मेरे लिए काम नहीं करता ... पहचानकर्ता आग से इंकार कर देता है। क्या आप इसे ऊपर दिए गए कोड के साथ काम करने में सक्षम थे? – kevboh
यह संभवतः काम नहीं कर रहा है क्योंकि बैकबर्टबटन इटिम केवल पढ़ा जाता है, इसलिए यह कस्टम दृश्य स्वीकार नहीं कर रहा है।आपको इस उत्तर की तरह अपने स्वयं के बाएंबारबटनटन बनाने की आवश्यकता होगी। http://stackoverflow.com/questions/526520/how-to-create-backbarbuttomitem-with-custom-view-for-a-uinavigationcontroller – Andrew
आह, लेकिन तब तक मैं अपना पिछला तीर खो देता हूं जब तक कि मुझे कोई छवि न मिल जाए ... शायद इसके लायक नहीं। वैसे भी, धन्यवाद! – kevboh