ไม่สามารถพิมพ์ใน textfield ในโปรแกรมจำลอง iphone โดยใช้แป้นพิมพ์ Mac?


98

ฉันกำลังทำงานกับแอป iOS พื้นฐานซึ่งรองรับทั้งโหมดแนวตั้งและแนวนอน เมื่อแป้นพิมพ์จำลอง iPhone เปิดอยู่ในแนวนอนและฉันกำลังเปลี่ยนแอปเป็นโหมดแนวตั้งฉันไม่สามารถพิมพ์อะไรก็ได้ในช่องข้อความโดยใช้แป้นพิมพ์จริงของ Mac

มีใครเคยมีประสบการณ์นี้มาก่อนหรือไม่? เป็นบั๊กที่ทราบหรือไม่?



คุณสามารถให้ข้อมูลเพิ่มเติมเช่นเวอร์ชันของ XCode และ iOS SDK ที่คุณใช้งานได้หรือไม่?
brimble2010

1
ฉันมีปัญหาเดียวกันแน่นอน บางครั้งฉันยังได้รับคำเตือนเกี่ยวกับบริบทที่ไม่ถูกต้องในคอนโซลเป็นเวลานาน
bilobatum

คำตอบ:


82

พบวิธีแก้ปัญหาที่ยอดเยี่ยมสำหรับฉัน
เปิดโปรแกรมจำลองจากนั้นค้นหาเมนูฮาร์ดแวร์ -> แป้นพิมพ์มีสามตัวเลือก:

  1. iOS ใช้เค้าโครงเดียวกันกับ OS X : ตัวเลือกนี้จะปิดใช้งานแป้นพิมพ์ Mac
  2. เชื่อมต่อแป้นพิมพ์ฮาร์ดแวร์ : ตัวเลือกนี้เปิดใช้งานแป้นพิมพ์ Mac แต่แป้นพิมพ์จะไม่ปรากฏขึ้น
  3. สลับแป้นพิมพ์ซอฟต์แวร์ : ตัวเลือกนี้จะช่วยให้คุณพิมพ์โดยใช้ปุ่มกด Mac ของคุณและจะแสดง iOS บนแป้นพิมพ์บนหน้าจอด้วย

สิ่งนี้ใช้งานได้ในปี 2020 ... ไม่สามารถพิมพ์บนโปรแกรมจำลองได้หลังจากเปลี่ยนเป็นแป้นพิมพ์ Hardrware มันใช้งานได้
Juan

52

ใน Xcode 9 ฉันประสบปัญหาเดียวกันกับเครื่องจำลอง iPhone 8+ ฉันสามารถแก้ได้ด้วยวิธีนี้:

  1. เปิด~/Library/Preferences/com.apple.iphonesimulator.plistไฟล์
  2. ค้นหาตัวระบุตัวจำลองที่มีปัญหา(แสดงในหน้าต่างอุปกรณ์และโปรแกรมจำลอง )
  3. ตั้งCaptureKeyboardInputค่าเป็นYES
  4. รีสตาร์ทโปรแกรมจำลอง


2
ขอบคุณ. นี่เป็นสิ่งเดียวที่ใช้ได้สำหรับฉันใน Xcode 9 ได้ลองใช้ชุดค่าผสมต่างๆในเมนูฮาร์ดแวร์แล้วก็ไม่มีประโยชน์ ผ่านและเพิ่มมันลงในซิมส์ทั้งหมดของฉันด้วยตนเอง ไม่ได้ทำลายและสร้างซิมใหม่เพื่อดูว่ามันแก้ได้หรือไม่ ไม่ใช่ครั้งแรกที่แอปเปิ้ลทำให้ซิมส์เสียหายอาจจะไม่เป็นครั้งสุดท้าย :)
StephenFeather

2
คุณสมควรได้รับเหรียญรางวัล
Oliver Pearmain

2
นี่เป็นวิธีเดียวที่ช่วยฉันได้ ขอบคุณ!
gokeji

1
คำตอบคืออะไรครับคุณ
Jaydip

1
ใช่นี่คือคำตอบสำหรับฉัน ขอบคุณมาก
Witalo Benicio

42

ก่อนที่คุณจะเริ่มพิมพ์ (เมื่อแป้นพิมพ์บนหน้าจอปรากฏขึ้น) ให้กดเพียงแป้นคำสั่งด้วยตัวเองจากนั้นปล่อย สิ่งนี้ควรเปิดใช้งานแป้นพิมพ์อีกครั้งในเครื่องจำลอง


1
คำตอบนี้ปรากฏในการค้นหาของ Google สำหรับปัญหา ทำได้ดีมากยูจีน คุณคิดออกได้อย่างไร? ดีกว่า "วิธีแก้ปัญหา" อื่น ๆ ที่ฉันเคยลอง
Nuthatch

17
พิมพ์ CMD + Shift + K สองครั้งในขณะที่แป้นพิมพ์ปรากฏขึ้นช่วยแก้ปัญหาให้ฉันได้
Chanchal Raj

4
ไม่ทำงานในโปรแกรมจำลองจาก Xcode 9 ไม่มีอะไรเกิดขึ้น
Jose Ramirez

ทำงานให้ฉันครั้งเดียว จากนั้นแป้นพิมพ์ก็หยุดทำงานให้ฉันอีกครั้งไม่นานหลังจากนั้นและตอนนี้ก็ใช้ไม่ได้ (Simulator v10.0, Xcode 9.2)
Ryan H.

37

จากเมนู Simulator >> ฮาร์ดแวร์ >> คีย์บอร์ด >> เชื่อมต่อแป้นพิมพ์ฮาร์ดแวร์

หรือ

เพียงแค่กด ⌘ + ⌂ + K


สิ่งนี้ใช้ได้ผลสำหรับฉัน แต่หลังจากที่ฉันรีสตาร์ทเครื่องจำลอง
marcomoreira92

26

เปิดตัว iOS Simulator Hardware > Keyboard > Connect Hardware Keyboardและเปิดใช้งาน

(คุณอาจปิดการใช้งานโดยไม่ได้ตั้งใจโดยการกดCMD + SHIFT + K- ทางลัดเดียวกับ Clean ใน Xcode)


18

ใน Simulator พยายามเปลี่ยนอุปกรณ์ จากนั้นเรียกใช้แอปของคุณอีกครั้งบนอุปกรณ์เดิม ที่ได้ผลสำหรับฉัน

หากขั้นตอนแรกเพียงอย่างเดียวไม่ได้ผลให้ยกเลิกการเลือกตัวเลือก: iOS ใช้รูปแบบแป้นพิมพ์เดียวกันกับ OS X จากนั้นเปลี่ยนอุปกรณ์

ฉันคิดว่ามันทำแบบสุ่มจนกว่ามันจะได้ผล ลิงซ่อม.


1
ฉันไม่ต้องทำขั้นตอนแรก แต่ขั้นตอนที่สองได้ผล ขอบคุณ!
rob5408

ฉันชอบที่ทุกคำตอบสำหรับคำถามนี้แตกต่างกันอย่างสิ้นเชิง โปรแกรมจำลอง iOS โง่ ของคุณทำงานให้ฉัน - ฉันสุ่มมันเข้าสู่การส่ง :)
Darragh Enright

สิ่งนี้ใช้ได้ผลสำหรับฉันยกเว้นฉันไม่จำเป็นต้องเปิดโปรแกรมจำลองอื่น ฉันเพียงแค่ปิดหน้าต่างสำหรับโปรแกรมจำลอง (คุณสามารถมีหน้าต่างจำลองหลายหน้าต่างได้แล้วและปิดทีละหน้าต่างด้วย) จากนั้นเรียกใช้แอปจาก Xcode อีกครั้งเพื่อนำกลับมา มีบางอย่างที่ไม่สม่ำเสมอกับเครื่องจำลอง เป็นปัญหามานานแล้ว :(
Ryan H.

17

คำแนะนำเหล่านี้ไม่ได้ผลสำหรับฉัน ฉันปิดแอป iOS Simulator แล้วรีสตาร์ท ที่แก้ไขให้ฉัน


โง่. ทำงานให้ฉัน
KeithTheBiped

หากคุณได้ลองสลับแป้นพิมพ์ด้วย shift-command-k แล้วให้ลองขั้นตอนต่อไป
KeithTheBiped

@KeithTheBiped ฉันลอง shift-command-k โดยไม่มีโชคก่อนที่จะจบลงด้วยการรีสตาร์ทเครื่องจำลอง iOS
บุคอรี

14

ฉันคิดว่าเป็นเพียงเพราะปัญหาที่คุณไม่ได้เลือก 'เชื่อมต่อตัวเลือกแป้นพิมพ์ฮาร์ดแวร์บนแถบเมนูจำลองที่ชื่อ' ฮาร์ดแวร์ '

กรุณาทำตามขั้นตอน

ไปที่: ฮาร์ดแวร์ -> คีย์บอร์ด -> เชื่อมต่อคีย์บอร์ดฮาร์ดแวร์

หวังว่ามันจะช่วยคุณแก้ปัญหาขอบคุณป้อนคำอธิบายภาพที่นี่


11

ฉันพบปัญหาเดียวกัน ฉันเชื่อว่าปัญหาเกี่ยวข้องกับคีย์คำสั่งที่ "ติดอยู่" ในโปรแกรมจำลองหากคุณหมุนอุปกรณ์ในเครื่องจำลองโดยใช้คำสั่งซ้าย - ลูกศรและคำสั่ง - ขวา - ลูกศรลัด

ในขณะที่เรารอให้ Apple แก้ไขวิธีหนึ่งคือหมุนอุปกรณ์โดยเลือกตัวเลือกเมนูแทนแป้นพิมพ์ลัด สิ่งนี้จะหมุนอุปกรณ์และดูเหมือนว่าจะปล่อยให้แป้นพิมพ์อยู่ในสถานะใช้งานได้



5

ไม่ใช่ปัญหาเพียงทำตามขั้นตอนง่ายๆเหล่านี้

  1. เปิดโปรแกรมจำลอง

  2. ไปที่ด้านบนและคุณเห็นฮาร์ดแวร์ตัวเลือกคลิกที่นี่

  3. เมื่อคุณคลิกที่ฮาร์ดแวร์ตัวเลือกบางตัวจะปรากฏขึ้นและตัวเลือกหนึ่งคือคีย์บอร์ด

  4. คลิกที่ตัวเลือกคีย์บอร์ดและคุณจะเห็นตัวเลือกสามตัวปรากฏขึ้น

  5. หากคุณต้องการใช้แป้นพิมพ์ปุ่ม mac ของคุณให้เลือกตัวเลือกที่ 2 เชื่อมต่อแป้นพิมพ์ฮาร์ดแวร์

  6. หากคุณต้องการใช้แป้นพิมพ์สำหรับแตะมือถือให้เลือกตัวเลือกที่ 3

  7. ตัวเลือกแรกสำหรับผู้ที่เลือกแป้นพิมพ์ผ่านรหัส

สนุกกับการทำงานทั้งหมด


1
หากไม่ได้ผล ฆ่า (ปิดและเริ่ม) โปรแกรมจำลองและทำซ้ำขั้นตอนเหล่านี้อีกครั้ง หวังว่ามันจะได้ผล
FARAZ

5

ฉันเพิ่งติดตั้ง Xcode (5.0) เวอร์ชันใหม่และแป้นพิมพ์ใน iOS Simulator ใช้ไม่ได้ในการเปิดตัวครั้งแรก เพียงแค่รีสตาร์ทโปรแกรมจำลองช่วยได้


4

สำหรับฉันเลือก Simulator เลือกฮาร์ดแวร์ -> คีย์บอร์ด -> เชื่อมต่อคีย์บอร์ดฮาร์ดแวร์

มันได้ผลสำหรับฉัน


3

ฉันเพิ่งลองสิ่งที่คุณเพิ่งพูดและมันเป็นความจริงมันใช้ไม่ได้ถ้าฉันย้ายไปที่แนวนอนแล้วกลับมาเป็นแนวตั้งอีกครั้ง มันไม่มีตรรกะใด ๆ เพราะแอพของฉันไม่ได้เปลี่ยนไปและมันก็ใช้งานได้ดีในอุปกรณ์ดังนั้นจึงเป็นจุดบกพร่องในโปรแกรมจำลอง

คุณสามารถรายงานไปยัง Apple โดยใช้สิ่งนี้:

https://developer.apple.com/bug-reporting/


2

โซลูชันที่ใช้งานได้จริงสำหรับฉันถูกลบตัวจำลองและสร้างใหม่ ข้อผิดพลาดนี้ฉันคิดว่ามักเกิดขึ้นเมื่อทางลัดทั้งหมดไม่ทำงานจากแป้นพิมพ์ไปจนถึงโปรแกรมจำลอง


2

ออกจากโปรแกรมจำลองและเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล:

rm ~/Library/Preferences/com.apple.iphonesimulator.plist


ตอบโจทย์นี้ได้อย่างสมบูรณ์แบบ!
Farid Blaster


2

CMD + SHIFT + K

ฉันได้กดคำสั่งนี้ 2 ครั้งเพื่อสลับแล้วมันก็เริ่มทำงาน


1

หากแป้นพิมพ์ Mac ของคุณยังคงถูกตัดการเชื่อมต่อหลังจากที่ตัวเลือกและการตั้งค่าทั้งหมดถูกต้องแล้วสาเหตุหนึ่งมาจากการหมุนอุปกรณ์

หากคุณCMD+ หรือหมุนอุปกรณ์ก่อนเวลาที่โปรแกรมจำลองกำลังเริ่มทำงานแป้นพิมพ์ Mac จะไม่ทำงานอย่างแน่นอนไม่ว่าจะเกิดอะไรขึ้น การเปลี่ยนการตั้งค่าเมนูไม่ทำอะไรเลย! การใช้แป้นพิมพ์ Mac เพื่อป้อนข้อมูลภายในอุปกรณ์อาจช่วยได้ก่อนที่คุณจะหมุนอุปกรณ์

การปิด "ส่งทางลัดเมนูไปยังอุปกรณ์" และการรีสตาร์ทโปรแกรมจำลองจะช่วยได้ในบางครั้ง ฉันจะอัปเดตหากได้รับพฤติกรรมที่น่าเชื่อถือและสร้างขึ้นใหม่ได้

ฉันพบว่าแป้นพิมพ์ Mac ใช้งานได้ประมาณครึ่งหนึ่งของเวลาที่ฉันเรียกใช้และออกจาก Simulator 50% จะไม่เลวร้ายหลังจากหลายปีที่ผ่านมา!?




1

ฉันเพิ่งออกจากโปรแกรมจำลองของฉันและมันก็ใช้ได้ผลสำหรับฉัน


0

ฉันพบปัญหานี้ทุกครั้งที่หมุนตัวจำลอง การทำตามคำแนะนำเพื่อเปลี่ยนตัวเลือกฮาร์ดแวร์ไม่ได้ผลสำหรับฉันไม่รีบูต iOS Simulator

ฉันพบเคล็ดลับที่คลิกพื้นที่แก้ไขหลังจากการหมุนทำให้แป้นพิมพ์ Mac ทำงานได้


0

หลังจากทำสิ่งต่างๆมากมายเพียงแค่รีสตาร์ทเครื่องและเปิดใช้งานด้านล่างนี้

การเปิดใช้งานสิ่งนี้ในโปรแกรมจำลอง: ฮาร์ดแวร์ -> คีย์บอร์ด -> เชื่อมต่อคีย์บอร์ดฮาร์ดแวร์


0

สำหรับเวอร์ชัน 10.0 (SimulatorApp-851.2 CoreSimulator-518.19) ที่มี Xcode 9.3 ไม่มีอะไรได้ผลสำหรับฉัน ฉันรีเซ็ตตัวจำลองโดยฮาร์ดแวร์ -> ลบเนื้อหาและการตั้งค่าทั้งหมด -> ลบ ทำความสะอาดโครงการและเรียกใช้โปรแกรมจำลอง การเชื่อมต่อแป้นพิมพ์กลับมาแล้ว


0

ฉันพบปัญหานี้หลังจากที่ฉันลบMain.storyboardและสร้างหน้าต่างหลักในรหัส การเปลี่ยนกลับไปใช้การMain.storyboardแก้ไขสำหรับฉัน


0

สำหรับฉันการทำสิ่งนี้ใช้ได้กับ iPhone 8+ จำลอง iOS 11.2: 1 ไปที่เมนู -> ฮาร์ดแวร์ -> ลบเนื้อหาและการตั้งค่าทั้งหมด 2. ลบข้อมูลที่ได้รับจาก xcode Xcode -> ค่ากำหนด -> สถานที่ -> คลิกที่ลูกศรขวาทางด้านซ้ายของปุ่ม "ขั้นสูง"


0

สำหรับฉันบนโปรแกรมจำลองเปิดอยู่ในเมนูของ Mac ของคุณคลิกฮาร์ดแวร์และไปที่ตัวเลือกแป้นพิมพ์และเลือกแป้นพิมพ์สลับซอฟต์แวร์ ตามที่ปรากฏ


0

มีไลบรารีสำหรับแก้ไขไฟล์ plist ที่เรียกว่า plistlib นี่คือรหัสของฉัน:

    import plistlib

    file_name = ('path/to/com.apple.iphonesimulator.plist')
    try:
        p = plistlib.readPlist(file_name)
        p["ConnectHardwareKeyboard"] = "NO"
        plistlib.writePlist(p, file_name)
    except:
        print("Failure")

สิ่งนี้จะอ่านไฟล์ plist เปลี่ยนConnectHardwareKeyboardค่าเป็นNoแล้วเขียนไฟล์ใหม่ไปยังตำแหน่งเดิม วิธีนี้ใช้ได้ผลสำหรับฉัน แต่โปรดแจ้งให้เราทราบหากมีวิธีที่ดีกว่านี้ ฉันยังใหม่กับการเขียนโค้ด


0

XCode 12: ในหน้าต่างจำลองจากบานหน้าต่างด้านบน I / O> อินพุต> ส่งอินพุตคีย์บอร์ดไปยังอุปกรณ์

หรือ alt-command-k

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.