亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將輸入視圖添加到textfield iOS 8時出錯

將輸入視圖添加到textfield iOS 8時出錯

眼眸繁星 2019-11-13 15:32:28
我在iOS 8上向我的應用程序添加自定義輸入視圖時遇到問題。在iOS 7上,它運行正常,但是在切換到iOS 8時,一切都失敗了。這是堆棧跟蹤:2014-06-03 21:23:54.237 MyApp[1910:47245] *** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<UICompatibilityInputViewController: 0x1103f9d40>should have parent view controller:<StopChooser: 0x11083e200> but requested parent is:<UIInputWindowController: 0x110858800>'*** First throw call stack:(    0   CoreFoundation                      0x00000001042eee35 __exceptionPreprocess + 165    1   libobjc.A.dylib                     0x0000000103b919a0 objc_exception_throw + 45    2   CoreFoundation                      0x00000001042eed6d +[NSException raise:format:] + 205    3   UIKit                               0x00000001023d94cd -[UIViewController _addChildViewController:performHierarchyCheck:notifyWillMove:] + 184    4   UIKit                               0x0000000102977a2b -[UIInputWindowController changeToInputViewSet:] + 416    5   UIKit                               0x0000000102973f56 -[UIInputWindowController moveFromPlacement:toPlacement:starting:completion:] + 185    6   UIKit                               0x000000010297826a -[UIInputWindowController setInputViewSet:] + 526    7   UIKit                               0x0000000102973c97 -[UIInputWindowController performOperations:withAnimationStyle:] + 50    8   UIKit                               0x00000001027559bb -[UIPeripheralHost(UIKitInternal) setInputViews:animationStyle:] + 1054    9   UIKit                               0x0000000102422afd -[UIResponder becomeFirstResponder] + 468    10  UIKit                               0x00000001023235d3 -[UIView(Hierarchy) becomeFirstResponder] + 99    11  UIKit                               0x00000001029cdbfb -[UITextField becomeFirstResponder] + 51    + 177lib: terminating with uncaught exception of type NSException    (lldb) 相關部分是前幾行。有人可以解釋嗎?所有我打電話是myTextview.inputView = keyboard; 鍵盤是在情節提要中創建并通過IBOutlet鏈接的UIView。
查看完整描述

3 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

我以前遇到過這個問題。

問題

  • 您必須確保將分配給該視圖inputViewinputAccessoryView不屬于任何父視圖。當您從ViewController中的xib創建這些視圖時,默認情況下會將它們設置為超級視圖的子視圖。

解決方案提示

  • removeFromSuperview在您要分配給視圖的方法上使用inputViewinputAccessoryView


查看完整回答
反對 回復 2019-11-13
?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

就在becomeFirstResponder從超級視圖中刪除用于輸入的View 之前:


mTextField.inputView = mInputVeiw;

[mInputVeiw removeFromSuperview];

[mTextField becomeFirstResponder];

希望能幫助到你。


查看完整回答
反對 回復 2019-11-13
?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

您必須確保將分配給該視圖inputView或inputAccessoryView不屬于任何父視圖。


由于在情節提要中創建的任何“輸入視圖”(因此已添加到VC中view)都不能設置為inputView或inputAccessoryView不導致崩潰,因此此錯誤尤其令人討厭。


如果輸入視圖未添加到VC view,則輸入視圖將無法在Interface Builder故事板中進行可視化編輯。僅在情節提要的左窗格中可見。


如何將Xcode故事板的“模擬指標”工具欄連接到實際的IBOutlet UIToolbar?


我希望inputAccessoryView直接在情節提要中建立IB連接。這會導致崩潰。我發現的解決方案是使第二個IBOutlet連接到情節提要中的視圖,然后viewDidLoad將其從超級視圖中刪除,然后立即分配給inputAccessoryView。不知道我是否最終會使用它。


- (void)viewDidLoad {


    // ...


    [self.keybordView removeFromSuperview];

    self.inputAccessoryView = self.keybordView;

}


查看完整回答
反對 回復 2019-11-13
  • 3 回答
  • 0 關注
  • 895 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號