आईओएस 8 पर स्विच करने के बाद, जब मैं कीबोर्ड संक्रमण के दौरान दृश्यों को स्थानांतरित करता हूं तो मुझे अजीब व्यवहार मिल रहा है। क्या कोई बता सकता है कि क्या हो रहा है?आईओएस 8: कीबोर्ड संक्रमण के दौरान चलती दृश्यों के साथ क्या चल रहा है?
समस्या का प्रदर्शन करने के लिए यहां एक न्यूनतम उदाहरण दिया गया है। मेरे पास UITextField
और UIButton
के साथ एक साधारण दृश्य है। फ़ंक्शन nudgeUp
टेक्स्ट फ़ील्ड और बटन को 10 अंकों तक ले जाता है। यह buttonPressed
कॉलबैक, या keyboardWillShow
कॉलबैक द्वारा ट्रिगर किया गया है।
जब मैं बटन टैप करता हूं, तो कोड अपेक्षित कार्य करता है: buttonPressed
कॉल nudgeUp
और बटन और टेक्स्ट फ़ील्ड 10 अंकों तक कूदता है।
जब मैं टेक्स्ट फ़ील्ड टैप करता हूं, keyboardWillShow
nudgeUp
पर कॉल करता है, लेकिन व्यवहार बहुत अलग है। बटन और टेक्स्ट फ़ील्ड तुरंत नीचे 10 अंक से कूदें, और उसके बाद कुंजीपटल स्वयं दिखाए जाने के बाद अपनी मूल स्थिति पर वापस स्लाइड करें।
ऐसा क्यों हो रहा है? आईओएस 8 में कीबोर्ड प्रस्तुति के दौरान मैं एनिमेशन के नियंत्रण कैसे प्राप्त कर सकता हूं?
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
}
- (void)keyboardWillShow:(NSNotification *)notification
{
// Called when the keyboard appears.
[self nudgeUp];
}
- (IBAction)buttonPressed:(id)sender {
[self nudgeUp];
}
- (void)nudgeUp
{
CGRect newTextFieldFrame = self.textField.frame;
newTextFieldFrame.origin.y -= 10;
self.textField.frame = newTextFieldFrame;
CGRect newButtonFrame = self.button.frame;
newButtonFrame.origin.y -= 10;
self.button.frame = newButtonFrame;
}
@end
मैं इस सवाल क्योंकि मैं देख रहा हूँ कि UIKeyboardWillShowNotification भी तैनात किया जा रहा कभी नहीं किया गया है पाया। (जैसा कि, addObserver कॉल में संदर्भित चयनकर्ता के भीतर एक ब्रेकपॉइंट कभी हिट नहीं होता है!)। क्या आपने सत्यापित किया है कि अधिसूचना वास्तव में आपको पोस्ट की जा रही है? (मैं पूछता हूं क्योंकि हालांकि आईओएस 8 और ऑटो लेआउट सीखना हस्तक्षेप कर सकता है, मेरा ऐप पुराना है जो ऑटो लेआउट के साथ बनाया गया नहीं है)। – tobinjim
अद्यतन: इसमें एक टेक्स्टफील्ड के साथ एक नया सिंगल-विंडो ऐप बनाया गया और ऑटोलाउट चेकबॉक्स के बावजूद अधिसूचना पोस्ट ... hmm) – tobinjim
क्षमा करें, आपकी मदद नहीं कर सकता। अधिसूचना निश्चित रूप से मेरे कोड में पोस्ट की जा रही है। – Pitarou