2012-12-28 202 views

回答

1

沒有屬性或方法來防止用戶使用放大在特定的文本字段上的玻璃。您可以嘗試阻止字符串中的所有字符:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if(range.location < textField.text.length) return NO; else return YES; 
} 

經過一番研究,我發現這個問題:Disable Magnifying Glass in UITextField。接受答案的作者說,有一種方法可以做到這一點:

您還可以設置userInteractionEnabled爲NO,使用戶無法 點擊字段。手動調用becomeFirstResponder,以使字段 獲得焦點,因爲用戶無法點擊進行焦點。

但是,據我所知,它不起作用,因爲setUserInteractionEnabled:NO阻止文本字段成爲第一響應者。在第二次研究之後,我發現了另一個問題:Show UITextField keyboard on firstResponder even when userInteractionEnabled = NOMaxGabriel用戶聲稱,他發現這樣做的方式:

我要做的就是隱藏的文本字段添加到視圖,並呼籲 becomeFirstResponder就可以了。用戶不知道該文本字段 存在。在文本字段的委託回調中,我將輸入的用戶文本 添加到UITextView中(儘管您可以將 文本添加到任何想要的內容中,例如像您的 問題那樣的UITextField)。我關閉了userInteractionEnabled以顯示文字 視圖。這會產生你想要的效果。

堆棧溢出是一個龐大的數據庫,在提出問題之前稍微研究一下可能會在未來幫助你。

+0

您的解決方案是一個很好的開始,但要小心,因爲這不會允許用戶從字符串末尾刪除。 – atreat

0

對於停止的UITextField進入文本,你應該使用的UITextField委託方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
//Set tag for a textfield 
    if(textField.tag==10) 
    { 
     NSUInteger newLength = [textField.text length] + [string length] - range.length; 
     return (newLength < [textField.text length]) ? NO : YES; 
    } 
} 

修改邏輯按照您的要求。 用於防止在兩個字符之間輸入文本使用NSRange和範圍的文本字段文本小於文本字段文本長度然後返回否然後文本將不會輸入到UITextField

0

你不能禁止插入符移動,但可以使用UITextFieldDelegate的方法textField:shouldChangeCharactersInRange:replacementString:進行測試,如果文本已經輸入字符串中類型的,如果它不是那麼文本框手動更改文本,並移動插入符結束與selectedTextRange幫助UITextInput協議的財產。