2012-01-29 16 views
8

करने के लिए रूपांतरण मैं सी # करने के लिए कोड के इस टुकड़े कन्वर्ट करने के लिए कोशिश कर रहा हूँ, कोड से है एप्पल के documentationObj सी से सी #

NSDictionary* info = [aNotification userInfo]; 

CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0); 

scrollView.contentInset = contentInsets; 

scrollView.scrollIndicatorInsets = contentInsets; 

CGRect aRect = self.view.frame; 

aRect.size.height -= kbSize.height; 

if (!CGRectContainsPoint(aRect, activeField.frame.origin)) { 

    CGPoint scrollPoint = CGPointMake(0.0, activeField.frame.origin.y-kbSize.height); 

    [scrollView setContentOffset:scrollPoint animated:YES]; 

अब तक यह मेरा प्रयास, मैं CGRectValue पर अटक कर रहा हूँ है।

    NSDictionary info = n.UserInfo; 

     SizeF kbSize = ((RectangleF)info[UIKeyboard.FrameBeginUserInfoKey]).Size; 

     UIEdgeInsets contentInsets = new UIEdgeInsets(0.0f, 0.0f, kbSize.Height, 0.0f); 

     this.uiScrollView.ContentInset = contentInsets; 
     this.uiScrollView.ScrollIndicatorInsets = contentInsets; 

     RectangleF aRect = this.View.Frame; 

     aRect.Size.Height -= kbSize.Height; 

     if(!aRect.Contains(_currentField.Frame)) 
     { 
      PointF scrollPoint = new PointF(0.0f, _currentField.Frame.Y - kbSize.Height); 
      this.uiScrollView.SetContentOffset(scrollPoint, true); 
     } 

मैं शायद सही प्रकार का उपयोग नहीं कर रहा हूं, क्या कोई मेरी मदद कर सकता है, या कुछ वैकल्पिक कोड समान काम कर सकता है। धन्यवाद

+0

मुझे यकीन नहीं है कि "मैं CGRectValue पर अटक गया हूं" का क्या मतलब है। क्या डीबगर दिखाता है कि पहले से निर्दिष्ट चर के सभी मानों की अपेक्षा की जाती है? ARect = self.view.frame के बाद aRect के बारे में डीबगर क्या दिखाता है? –

+0

मैं उस लाइन को सी # कोड में परिवर्तित नहीं कर सकता। यह संकलित नहीं करता है। कृपया मैंने कोशिश की सी # कोड देखें। –

+0

आप '_currentField' कैसे प्राप्त करते हैं? मैं ट्यूटोरियल को भी परिवर्तित कर रहा हूं * [आईओएस एसडीके: कुंजीपटल के नीचे से सामग्री को रखना] (http://code.tutsplus.com/tutorials/ios-sdk-keeping-content-from-underneath-the-keyboard-- मोबाइल -6103) * ... – testing

उत्तर

5

आपके सी # कोड के साथ कुछ और गलत है।

aRect.Size.Height -= kbSize.Height; 

Size प्रकार System.Drawing.SizeF जो एक struct (अर्थात एक मूल्य के प्रकार) है की है। इसका मूल्य बदलना aRect उदाहरण (यह एक .NET व्यवहार है) पर वापस प्रसारित नहीं किया जाएगा।

क्या करना चाहिए है:

aRect.Height -= kbSize.Height; 

जो वास्तव में aRect आकार (नहीं Size struct जो RectangleF वापस करने के लिए निर्दिष्ट नहीं किया जाएगा) को कम किया जाएगा।

+0

अच्छी पकड़ के लिए धन्यवाद। वह वास्तव में मेरे अनुवाद में एक बग था। अब, यह बेहतर काम कर रहा है, लेकिन यह सुनिश्चित नहीं है कि जब मैं टाइप करना शुरू करता हूं तो UITextField अभी भी थोड़ी देर तक कूदता है, भले ही यह कीबोर्ड के शीर्ष पर पहले से दिखाई दे। कोई उपाय? –

+0

यह देखे बिना कि यह कितना अच्छा कूदता है ;-) लेकिन यदि आप एक छोटा, आत्मनिर्भर परीक्षण केस बना सकते हैं जो व्यवहार दिखाता है तो उसे http://bugzilla.xamarin.com पर एक बग रिपोर्ट से संलग्न करें और हमारे पास होगा इसे देखो – poupou

+0

ठीक है, करेंगे। इस बीच, क्या आप कृपया मुझे बता सकते हैं कि इस मुद्दे के लिए किसी अन्य फिक्स का कोई अन्य नमूना है, यानी जब कीबोर्ड खत्म हो जाता है तो टेक्स्टफील्ड को दृश्यमान बनाते हैं। मुझे अब तक मोनोचच के लिए अच्छा काम करने वाला नमूना नहीं मिला। सहायता के लिए धन्यवाद। –

13

यह पता चल:

((NSValue)info[UIKeyboard.FrameBeginUserInfoKey]).RectangleFValue.Size 

यही काम करना चाहिए। हालांकि मैं इसे काम नहीं कर सका, जैसा कि मैं चाहता था, कोड की वह पंक्ति वास्तव में संकलित और ओब्जे सी कोड में अनुवाद करेगी।

+1

'var kbSize = ((NSValue) जानकारी [UIKeyboard.FrameBeginUserInfoKey])। CGRectValue.Size;' – Arvis